JFrame に含まれる JPanel ごとにバインドを追加したので、W
キーを押したときに少なくとも 1 つの JPanel が起動すると想定していました。私はKeyStroke
間違っていますか?
SSCCE:
public class TestTemp extends JFrame {
public TestTemp() {
setSize(1000, 800);
JPanel parentPanel = new JPanel(new MigLayout("", "grow, fill",
"grow, fill"));
parentPanel.setBackground(Color.GREEN);
setContentPane(parentPanel);
parentPanel.setSize(1000, 800);
JPanel videoPanel = new JPanel();
videoPanel.setBackground(Color.CYAN);
JPanel contentPanel = new JPanel();
contentPanel.setLayout(new MigLayout("fillx", "[fill]", "[nogrid]"));
contentPanel.setBackground(Color.YELLOW);
parentPanel.getInputMap().put(KeyStroke.getKeyStroke("W"), new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("W pressed, parent panel");
}
});
contentPanel.getInputMap().put(KeyStroke.getKeyStroke("W"), new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("W pressed, content panel");
}
});
videoPanel.getInputMap().put(KeyStroke.getKeyStroke("W"), new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("W pressed, video panel");
}
});
parentPanel.add(videoPanel, "wmin 200");
parentPanel.add(contentPanel);
}
public static void main(String[] args) {
JFrame frame = new TestTemp();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
parentPanel
編集:次を使用してフォーカスを与えようとしました:
parentPanel.setFocusable(true);
parentPanel.requestFocus();
しかし、それは何の効果もないように見えました。
編集2:それが間違ったキーストロークではないことを確認するために、ドキュメントが例で示したキーストロークを使用しました:
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0)
しかし、繰り返しますが、ヒットEnter
しても効果はありませんでした。