2016-04-30 121 views
2

我不知道爲什麼我的應用程序無法檢測到我的鍵盤。 應用其實現SerialPortEventListener和KeyListener的JFrame。 在我的應用程序的Jframe中,我有1個帶2個面板的選項卡式窗格。 當我按下某些按鈕時,它不起作用(輸出中沒有任何東西)。KeyListener不起作用,我的Jframe無法識別我的鍵盤

我會告訴你我的代碼(不是所有的,只是最importants部分):

我的課:

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

MY鍵的功能。

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"); 
    } 

我的建造者我的班級

public java_arduino_frame() { 


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

} 

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

回答

1

,當它被登記的組分是可聚焦的和具有焦點,因爲點擊按鈕將導致焦點被轉移到按鈕A KeyListener將只響應,幀將不再有輸入焦點。

框架也不可能直接接收鍵盤焦點。

作爲一般的經驗法則,您應該使用Key Bindings API來代替,這將爲您提供克服重點相關問題的能力。

取決於你在做什麼,你也可以考慮使用一個JTextAreaJTextFieldDocumentListener,假設你想通過串行連接字符發送到。有關更多詳細信息,請參閱Listening for Changes on a Document