Swing/DefaultButtonFollowsFocus のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/DefaultButtonFollowsFocus へ行く。
- 1 (2020-02-24 (月) 18:14:55)
- 2 (2021-08-04 (水) 06:47:05)
- category: swing folder: DefaultButtonFollowsFocus title: DefaultButtonをフォーカスが存在するJButtonに設定する tags: [JButton, Focus, JRootPane] author: aterai pubdate: 2020-02-24T18:13:51+09:00 description: DefaultButtonではないJButtonにフォーカスが存在する場合、そのJButtonがDefaultButtonとしてふるまうよう設定します。 image: https://drive.google.com/uc?id=1psyQVTV93zuNxaZxHISe8XkyPWTPAS7Z
概要
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)
- デフォルトボタンではない
JButton
にフォーカスがある場合、Enterキー入力でデフォルトボタンではなく現在フォーカスが存在するJButton
がクリックされる - たとえば上記のサンプルでデフォルトボタンを
Button1
、現在のフォーカスをButton2
に設定してEnterキーを入力するとButton2
がクリックされてBeep
音が鳴る WindowsLookAndFeel
のデフォルト
- デフォルトボタンではない
UIManager.put("Button.defaultButtonFollowsFocus", Boolean.FALSE)
- デフォルトボタンではない
JButton
にフォーカスが存在する場合でも、Enterキー入力で常にデフォルトボタンがクリックされる - たとえば上記のサンプルでデフォルトボタンを
Button1
、現在のフォーカスをButton2
に設定してEnterキーを入力するとButton1
がクリックされてBeep
音は鳴らない
- デフォルトボタンではない