猿问

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

我设计了一个带有 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();

    }


慕侠2389804
浏览 534回答 1
1回答

12345678_0001

这是一个邪恶的拐杖,但这项工作。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();        }    });}
随时随地看视频慕课网APP

相关分类

Java
我要回答