JButtonは、クリックされたときにフォーカスを取得する必要があります。おそらく、それを行わないように変更されたボタンがあります。しかし、それはyoirの問題を解決しません。
UI全体が作成された後でボタンを変更できます(GUIが開いているときに変更されないと仮定します)。この方法では、フレーム/ダイアログごとに1つの呼び出しサイトのみが必要です。
public static class FocusHelper {
public static void alterButtons(Component container) {
if (component instanceof Container) {
Component[] children = ((Container) component).getComponents();
for (Component child : children) {
alterButtons(child);
}
} else if (component instanceof JButton) {
((JButton) component).setRequestFocusEnabled(true);
}
}
}
ヘルパーメソッドは、コンポーネント階層全体をスキャンしてボタンを探し、各JButtonに対してsetRequestFocusEnabled()を呼び出します(達成したい内容に応じて、AbstractButtonなどの他のコンポーネントタイプを確認することもできます)。GUIが作成された場所からメソッドを呼び出し、最上位のコンテナー(JFrame、JDialog、またはその他のコンテナーコンポーネント)を渡すだけです。