I use JavaFX 2.1 and I created GUI using FXML, in the controller of this GUI I added myTextField.requestFocus();
.
But I always get the focus in the other control.
I use JavaFX 2.1 and I created GUI using FXML, in the controller of this GUI I added myTextField.requestFocus();
.
But I always get the focus in the other control.
The exact same answer as @Sergey Grinev. Make sure your version of java is up-to-date (JDK 1.8 or later).
If you requestFocus(); AFTER initializing the scene, it will work!
Like this:
I hope this helps. :)
At the time of
initialize()
controls are not yet ready to handle focus.You can try next trick:
For tricky complex applications (like Pavel_K has in the comments) you may want to repeat this routine several times and call method line next one:
Note this is undocumented approach and it may be wise to add a limit for repetitions to avoid endless loop if something changed or broke in future Java releases. Better to lose focus than a whole app. :)
This can occur when the Scene property for the Node is not yet set. Alas, the scene property can take a "long" time to be set.
The child node's scene property lags when a scene is first created, and also, when items are added to some parents, such as a TabPane (oddly some parents seem immune, I'm not sure why).
The correct strategy, which has always worked for me :
I have a handy Kotlin extension function which does this.
You can then call it from within you code like so :
Perhaps somebody would like to translate it to Java.