Imagine a simple Dialog (SSCCE at the bottom of this post)
with just two buttons, one of which is initially set up as
Default-button, such that a simple <Return>-key press would
invoke it.
In Windows, it seems to be "usual behaviour" that if I now
use the Tab-key to set focus on any other button, then the
focused button should temporally become the new "default"-
button, until focus goes to something not-a-button, then the
original default button would receive the blue frame again
and become default again.
As it seems, Java does not follow this principle: instead,
one button is declared as default, and regardless of whether
the focus is on a different button or not, <Return>-key would
always invoke the initially set default button.
Has anyone here ever needed to change his Java program to be
less alien on Windows in that matter?
Will I need to install Focus listeners on each component, and
set the defaultButton to either the focused component (if it
is a button), or the dialogs initial default (otherwise)?
--- SSCCE ---There is only supposed to be one default button. Focused button is a different matter. Use space bar to select focused button with keyboard.
Even when running it on Windows, the blue frame of the default
button doesn't follow the focus when Tabbing. When Focus is moved
to the Ok-button, the blue frame stays around the Cancel button.
--- begin - Test.java ---
import javax.swing.JOptionPane;
public class Test
{
public static void main(String[] args)
{
JOptionPane.showOptionDialog(null,
"My Message", "My Message Dialog",
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.INFORMATION_MESSAGE,
null, new String[]{"Ok", "Cancel"},
"Cancel");
System.exit(0);
}
}
--- end ---
On Wednesday, July 26, 2023 at 12:15:42 PM UTC-4, Andreas Leitgeb wrote:
In Windows, it seems to be "usual behaviour" that if I now
use the Tab-key to set focus on any other button, then the
focused button should temporally become the new "default"-
button, until focus goes to something not-a-button, then the
original default button would receive the blue frame again
and become default again.
There is only supposed to be one default button. Focused button
is a different matter. Use space bar to select focused button
with keyboard.
e.d.pro...@gmail.com <e.d.programmer@gmail.com> wrote:
On Wednesday, July 26, 2023 at 12:15:42 PM UTC-4, Andreas Leitgeb wrote: >>> In Windows, it seems to be "usual behaviour" that if I now
use the Tab-key to set focus on any other button, then the
focused button should temporally become the new "default"-
button, until focus goes to something not-a-button, then the
original default button would receive the blue frame again
and become default again.
There is only supposed to be one default button. Focused button
is a different matter. Use space bar to select focused button
with keyboard.
Yeah, count me in the choir for that preaching...
Unfortunately, the customers refuse to sing along with us.
Problem is solved!
The culprit was in very old parts of the code, where my predecessor- programmers explicitly thwarted Windows laf default behaviour, by
defining all (except the chosen one) as non-defaultCapable.
They were the same who explicitly selected windows laf, but really
only wanted the look, not the feel - well, not all of it, at least.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 300 |
Nodes: | 16 (2 / 14) |
Uptime: | 66:05:32 |
Calls: | 6,712 |
Files: | 12,244 |
Messages: | 5,356,309 |