Handling Enter key presses on Buttons in JavaFX
jonathan.giles at oracle.com
Tue Jun 7 22:07:48 UTC 2016
It's worth me quickly interjecting here to say that a button being
default does not automatically imply that the button has the focus by
default. Therefore, this suggestion is another behavioral change that
needs to be carefully understood.
On 8/06/16 10:04 AM, Tomas Mikula wrote:
> 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 <mailto:jonathan.giles at oracle.com>> wrote:
> 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
> Your thoughts, as always, are appreciated.
> -- Jonathan
More information about the openjfx-dev