在TextField中选择一个单词

Mar*_*elo 1 java javafx javafx-2

以下代码应该在JavaFX中选择一个单词TextField:

public class NewFXMain extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        final TextInputControl textField = new TextField("Hello World, World!");

        Button button = new Button("select");
        button.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent t) {
                textField.positionCaret(0);
                textField.selectNextWord();

                System.out.println(textField.getSelectedText());
            }
        });

        VBox root = new VBox();
        root.getChildren().add(textField);
        root.getChildren().add(button);
        primaryStage.setScene(new Scene(root, 300, 100));
        primaryStage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

Hello在控制台中打印,但在界面中没有选择任何内容(突出显示).如果对a执行相同操作,TextArea则会正确选择文本.

(错误的)结果TextField:

在此输入图像描述

并且(正确)的结果是TextArea:

在此输入图像描述

这是怎么回事?!?

Ser*_*nev 5

TextField除非它有焦点,否则不显示选择(虽然我不确定它是一个错误还是一个功能).您可以使用下一个代码查看选择:

    button.setOnAction(new EventHandler<ActionEvent>() {

        public void handle(ActionEvent t) {
            textField.requestFocus(); // get focus first
            textField.positionCaret(0);
            textField.selectNextWord();

            System.out.println(textField.getSelectedText());
        }
    });
Run Code Online (Sandbox Code Playgroud)