我不知道为什么我的应用程序无法检测到我的键盘。 应用它的JFrame实现SerialPortEventListener和KeyListener。 在我的应用程序的Jframe中,我有1个选项卡窗格和2个面板。 当我按下某些按钮时,它不起作用(输出中没有任何东西)。
我会告诉你我的代码(不是全部,只是最重要的部分):
public class java_arduino_frame extends javax.swing.JFrame implements SerialPortEventListener, KeyListener {
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);
}
});
答案 0 :(得分:1)
KeyListener
仅在注册的组件具有焦点并且具有焦点时才会响应,因为单击按钮将使焦点转移到按钮,帧将不再具有输入焦点。
框架也不太可能直接接收键盘焦点。
作为一般经验法则,您应该使用Key Bindings API代替,这将使您能够克服焦点相关的问题。
根据您正在做的事情,您可能还会考虑使用JTextArea
或JTextField
DocumentListener
,假设您要通过串行连接发送字符。有关详细信息,请查看Listening for Changes on a Document