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:

这是怎么回事?!?
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)