JavaFX - 打开新阶段时取消选择 TextField 中的文本

标签 java javafx

我设计了一个带有 TextField 和 Button 的简单表单。

创建舞台时,场景中包含表单,TextField 必须预加载一个字符。问题是,当表单出现时,字符被选中,如 image 所示。 .

我试过 textfield.deselect() 或 textfield.positionCaret(1) (或两者)但没有任何改变。 我不想移除文本字段上的焦点,而是取消选择文本并将插入符号移到末尾(这样如果用户写了一些东西,第一个字符就不会被覆盖)。

这是我写的代码:

try {
        Stage primaryStage = new Stage();
        FXMLLoader loader = new FXMLLoader();
        Pane root = loader.load(getClass().getResource("/resources/view/quick-search.fxml").openStream());
        QuickSearchCtrl quickSearchCtrl = (QuickSearchCtrl) loader.getController();
        quickSearchCtrl.text_tf.setText(text);
        quickSearchCtrl.text_tf.deselect();
        primaryStage.setTitle("");
        primaryStage.setScene(new Scene(root, 230, 54));
        primaryStage.show();
        primaryStage.setResizable(false);
    } catch (IOException e) {
        e.printStackTrace();
    }

最佳答案

这是一个邪恶的拐杖,但这个工作。

quickSearchCtrl.text_tf.setText(text);
deselect(quickSearchCtrl.text_tf);

private void deselect(TextField textField) {
    Platform.runLater(() -> {
        if (textField.getText().length() > 0 &&
                textField.selectionProperty().get().getEnd() == 0) {
            deselect(textField);
        }else{
            textField.selectEnd();
            textField.deselect();
        }
    });
}

关于JavaFX - 打开新阶段时取消选择 TextField 中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52304360/

相关文章:

java - java中两个字符串时间的平均时间

java - 谷歌 Guava : Supported way to get elements of a collection that comply with a given predicate?

java - 如何在 JavaFX 中获取当前打开的阶段?

java - 如何对 Eclipse 插件进行单元测试?

java - 启用 ssl 和 Elastic Beanstalk 的 Spring boot - 找不到文件

JavaFx 8 双向绑定(bind)

java - 如何在javafx中将PIxelFormat设置为rgb?

java - 如何将imageview绑定(bind)到数组索引mvvm javafx

Java Web Start 应用无法从快捷方式更新

java - 在mac上运行ant安装netbeans : Buildfile: build. xml不存在!构建失败