Swing では、KeyStroke をメイン パネルのアクション マップに追加する必要があります。たとえば、次のコードを使用すると、[F10] キーを押すたびに、JPanel を含む JFrame を更新できます。
public class MainWindow extends JFrame{
JPanel central;
public MainWindow(){
central = new JPanel();
// I assume you define your other 5 panels here
// and add them to the central JPanel.
getContentPane().add(central, BorderLayout.CENTER);
registerRefreshAction();
}
private void registerRefreshAction(){
javax.swing.Action refresh = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent ae) {
JFrame frame = (JFrame) getTopLevelAncestor();
frame.setVisible(false);
frame.getContentPane().repaint();
frame.setVisible(true);
}
};
KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F10, 0);
central.getActionMap().put("Refresh", refresh);
central.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, "Refresh");
}
}
前に示したように、コンストラクターのどこかで registerRefreshAction を呼び出す必要があります。あなたが言及した他のコンポーネントは、5 つのパネル内に含まれており、表示する必要はありません。Linuxで動作しています。