Handling Enter key presses on Buttons in JavaFX

Tomas Mikula tomas.mikula at gmail.com
Tue Jun 7 22:04:49 UTC 2016

What about forgetting the whole notion of a "default button" and the only
effect of setting the default property to true being that the button will
start as focused?

So I add a question:

3) Would anyone miss the "default button"?


On Tue, Jun 7, 2016 at 5:47 PM, Jonathan Giles <jonathan.giles at oracle.com>

> Hi all,
> One thing I've been looking into recently is the issue of what the Enter
> key should do when it is pushed with regards to buttons in a UI where one
> of those buttons is a 'default' button. There are number of Jira issues on
> this topic, and I wanted to poll the community to understand its opinions.
> The current situation is that the Enter key does not fire the focused
> Button. The Enter key is reserved for firing the 'default' Button in the UI
> (i.e. if someone has created a Button instance with the default property
> set to true). A default button is rendered slightly differently (in Modena
> it is blue for example). To fire the focused Button, the user must press
> the Space key.
> Tom Schindl filed a bug (JDK-8139510) that is a good example of the
> 'problem' this creates. In the bug report, a dialog is shown to the user.
> In the dialog is an OK button and a Cancel button. The OK button has been
> made the 'default' button. Regardless of which button has focus, the Enter
> key always fires the OK button. The only way to fire the Cancel button is
> via the Space key. This can be very confusing for users who have tabbed
> specifically to the 'Cancel' button and then pressed the Enter key, only to
> find they unwittingly fired the 'OK' action.
> To me this has always been a little counter-intuitive, because of my
> heritage as a long-time Windows user. I believe Linux is much the same as
> Windows. For others who grew up on Mac, I'm less sure on what people expect
> (but it seems to be that the Enter key fires the default button, not the
> focused button, i.e. JavaFX current behavior matches what is expected on OS
> X).
> What I'm proposing we do is to change the behavior as follows:
> 1) On OS X we do not change behavior at all - we keep the current 'Enter
> means default' and 'Space means focus' semantics.
> 2) On non-OS X platforms, we change the behavior so that Enter (and Space)
> will fire the _focused_ key, if one is focused. If no Button is focused
> (e.g. focus is in a TextField, etc), then Enter will work as it currently
> does and fire the default button, if one is specified. In short, default
> buttons will still be rendered blue to hint to the user that they are the
> default button, but they will be less prevalently fired by Enter key
> presses - only when they also have focus.
> The two questions that I have are:
> 1) Will this confuse users when there is a behavior change (and
> presumably, this change will be made in JDK 9 and not backported to JDK 8).
> If it will confuse users, is it still the right thing to do?
> 2) Do we want to have different behaviors for OS X and non-OS X? I'm a
> newly inducted member into the cult of Mac, and I don't yet have all my
> bearings sorted out, so I don't have a strong opinion here.
> Your thoughts, as always, are appreciated.
> -- Jonathan

More information about the openjfx-dev mailing list