为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕侠2389804 2021-09-15 16:45:08
我设计了一个带有 TextField 和 Button 的简单表单。创建舞台时,场景包含表单,TextField 必须预先加载一个字符。问题是,当显示形式时,该字符被选择,如图所示我试过 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();    }
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

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


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();

        }

    });

}


查看完整回答
反对 回复 2021-09-15
  • 1 回答
  • 0 关注
  • 533 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信