试图让KeyBindings工作

时间:2017-05-15 11:46:12

标签: java jcomponent

我正在尝试使用简单的KeyBindings程序。我按照java doc的说明,尝试测试在这个(Java Key Bindings Not Working)线程中回答的东西,但我不能让它工作。我想在按下“F1”时将“test”输出到控制台。谁能发现我的错误?

JFrame frame = new JFrame("shit");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

JPanel jPanel = new JPanel();
jPanel.getInputMap().put(KeyStroke.getKeyStroke("F1"), "focus");
jPanel.getActionMap().put("focus", new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("test");
    }
});

frame.add(jPanel);

1 个答案:

答案 0 :(得分:-2)

  1. 在框架可见之前,应将组件添加到框架中。

  2. 如果不起作用,请使用其他InputMap。阅读How Key Bindings Work上Swing教程中的部分,了解如何使用3种不同的InputMaps。