You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX打开TextInputDialog时取消文本选中,调用deselect()无效如何解决

问题原因

你代码中deselect()方法调用时机完全错误:showAndWait()是阻塞调用,会一直等待弹窗关闭之后才会执行后续代码,此时你再操作输入框的选中状态,已经不会作用于弹窗打开的阶段,自然没有任何效果。

解决方法

我们需要在弹窗显示前预先配置好取消选中的逻辑,等待弹窗显示、默认全选逻辑执行完成后触发取消选中操作,示例代码如下:

import javafx.application.Platform;
import javafx.scene.control.TextField;
import javafx.scene.control.TextInputDialog;

// ... 你的业务代码
TextInputDialog textInput = new TextInputDialog("whatever text");
textInput.initOwner(sentence.stage);
TextField inputEditor = textInput.getEditor();
// 监听弹窗显示状态,显示时触发取消选中逻辑
textInput.showingProperty().addListener((observable, oldShowing, newShowing) -> {
    if (newShowing) {
        // 用Platform.runLater保证逻辑在默认全选操作之后执行
        Platform.runLater(inputEditor::deselect);
    }
});
Optional<String> result = textInput.showAndWait();
if (result.isPresent()) {
   // 处理返回结果
}

内容的提问来源于stack exchange,提问作者Hasen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:54:07