Ответ 1
Во время initialize()
элементы управления еще не готовы обрабатывать фокус.
Вы можете попробовать следующий трюк:
@Override
public void initialize(URL url, ResourceBundle rb) {
Platform.runLater(new Runnable() {
@Override
public void run() {
tf.requestFocus();
}
});
}
Для сложных сложных приложений (например, Pavel_K в комментариях) вы можете повторить эту процедуру несколько раз и вызвать следующую линию методов:
private void repeatFocus(Node node) {
Platform.runLater(() -> {
if (!node.isFocused()) {
node.requestFocus();
repeatFocus(node);
}
});
}