Я использую JavaFX 2.1, и я создал графический интерфейс с использованием FXML, в контроллере этого графического интерфейса я добавил myTextField.requestFocus();.
Но я всегда получаю фокус в другом контроле.
Ответ 1
Во время initialize() элементы управления еще не готовы обрабатывать фокус.
Вы можете попробовать следующий трюк:
@Override
public void initialize(URL url, ResourceBundle rb) {
Platform.runLater(new Runnable() {
@Override
public void run() {
tf.requestFocus();
}
});
}
Для сложных сложных приложений (например, Pavel_K в комментариях) вы можете повторить эту процедуру несколько раз и вызвать следующую линию методов:
Если вы запрашиваетеFocus(); ПОСЛЕ инициализации сцены это сработает!
Вот так:
Stage stage = new Stage();
GridPane grid = new GridPane();
//... add buttons&stuff to pane
Scene scene = new Scene(grid, 800, 600);
TEXTFIELD.requestFocus();
stage.setScene(scene);
stage.show();
Надеюсь, это поможет.:)
Ответ 3
Точно такой же ответ, как @Sergey Grinev. Убедитесь, что ваша версия java обновлена (JDK 1.8 или новее).