概要
DefaultButton
ではないJButton
にフォーカスが存在する場合、そのJButton
がDefaultButton
としてふるまうよう設定します。
Screenshot
Advertisement
サンプルコード
String KEY = "Button.defaultButtonFollowsFocus";
Box box = Box.createHorizontalBox();
box.setBorder(BorderFactory.createTitledBorder(KEY));
JRadioButton r1 = new JRadioButton("TRUE");
JRadioButton r2 = new JRadioButton("FALSE");
if (UIManager.getBoolean(KEY)) {
r1.setSelected(true);
} else {
r2.setSelected(true);
}
ButtonGroup bg = new ButtonGroup();
ActionListener al = e -> UIManager.put(KEY, r1.equals(e.getSource()));
Arrays.asList(r1, r2).forEach(r -> {
r.addActionListener(al);
bg.add(r);
box.add(r);
});
View in GitHub: Java, Kotlin解説
UIManager.put("Button.defaultButtonFollowsFocus", Boolean.TRUE)
WindowsLookAndFeel
のデフォルト- デフォルトボタンではない
JButton
にフォーカスがある場合、Enterキー入力でデフォルトボタンではなく現在フォーカスが存在するJButton
がクリックされる - たとえば上記のサンプルでデフォルトボタンを
Button1
、現在のフォーカスをButton2
に設定してEnterキーを入力するとButton2
がクリックされてBeep
音が鳴る
UIManager.put("Button.defaultButtonFollowsFocus", Boolean.FALSE)
- デフォルトボタンではない
JButton
にフォーカスが存在する場合でも、Enterキー入力で常にデフォルトボタンがクリックされる - たとえば上記のサンプルでデフォルトボタンを
Button1
、現在のフォーカスをButton2
に設定してEnterキーを入力するとButton1
がクリックされてBeep
音は鳴らない
- デフォルトボタンではない