KeyListener不起作用,我的Jframe无法识别我的键盘

时间:2016-04-30 16:49:15

标签: keyboard jframe keylistener jtabbedpane

我不知道为什么我的应用程序无法检测到我的键盘。 应用它的JFrame实现SerialPortEventListener和KeyListener。 在我的应用程序的Jframe中,我有1个选项卡窗格和2个面板。 当我按下某些按钮时,它不起作用(输出中没有任何东西)。

我会告诉你我的代码(不是全部,只是最重要的部分):

MY CLASS:

public class java_arduino_frame extends javax.swing.JFrame implements SerialPortEventListener, KeyListener {

MY KEYS FUNCTIONS

    public void keyTyped(KeyEvent e){
    throw new UnsupportedOperationException("not yet");
    }

    public void keyPressed(KeyEvent e){
        int keyCode;
        keyCode = e.getKeyCode();   
        System.out.println(keyCode);
    }

    public void keyReleased(KeyEvent e){
     throw new UnsupportedOperationException("not yet");
    }

MY CLASS的构造词

  public java_arduino_frame() {


 getContentPane().setBackground( Color.LIGHT_GRAY );
 initComponents();  
 addKeyListener(this);

}

THE MAIN

   public static void main(String args[]) {
    strong text
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new java_arduino_frame().setVisible(true);
        }
    });

1 个答案:

答案 0 :(得分:1)

KeyListener仅在注册的组件具有焦点并且具有焦点时才会响应,因为单击按钮将使焦点转移到按钮,帧将不再具有输入焦点。

框架也不太可能直接接收键盘焦点。

作为一般经验法则,您应该使用Key Bindings API代替,这将使您能够克服焦点相关的问题。

根据您正在做的事情,您可能还会考虑使用JTextAreaJTextField DocumentListener,假设您要通过串行连接发送字符。有关详细信息,请查看Listening for Changes on a Document