Swing:检测onKeyPressed

时间:2011-08-17 22:41:45

标签: java swing keylistener

我正在尝试做一件非常简单的事情:当用户按下键盘键时触发一个动作

我想要映射的键是:

  • key +
  • key -
  • 密钥删除
  • ctrl + c
  • CTRL + V

    public class keytestmain扩展Applet {

    //Called when this applet is loaded into the browser.
    public void init() {
        //Execute a job on the event-dispatching thread; creating this applet's GUI.
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    JLabel lbl = new JLabel("Hello World");
                    add(lbl);
                    JPanel p = new JPanel();
                    p.setBackground(Color.green);
                    p.setMinimumSize(new Dimension(100,100));
                    p.setPreferredSize(new Dimension(100,100));
                    p.setMaximumSize(new Dimension(100,100));
                    InputMap inputMap = new InputMap();
    
                    // Add a KeyStroke
                    inputMap.put(KeyStroke.getKeyStroke("SPACE"), "actionName");
    
                    inputMap.setParent(p.getInputMap(JComponent.WHEN_FOCUSED));
                    p.setInputMap(JComponent.WHEN_FOCUSED, inputMap);
                    add(p);
                }
            });
        } catch (Exception e) {
            System.err.println("createGUI didn't complete successfully");
        }
    
    }
    

    }

但没有任何作用

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我会使用Key Bindings而不是KeyListeners。这更可靠,因为它没有很多焦点问题。此外,KeyListeners是一个相对较旧的AWT解决方案,因此根据您的JDE,该命令可能已被删除。