似乎我无法让我的程序注意到我按下按钮的事实。我已经看过很多教程和图片,并且我认为这段代码应该可以,但是不会。有谁能够帮助我?
package projekt;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
public class Projekt extends javax.swing.JFrame implements KeyListener {
public Projekt() {
initComponents();
this.addKeyListener(this);
}
[...]
@SuppressWarnings("unchecked")
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_A){
System.out.println("It works!!!"); //It won't print this
}
@Override
public void keyTyped(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void keyReleased(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
KeyEvent仅分派给具有焦点的组件。
this.addKeyListener(this);
您正在将KeyListener添加到框架。框架没有焦点。框架上显示的组件具有焦点。
我似乎无法让我的程序了解我按下按钮的事实。
您不应该使用KeyListener来侦听特定的按键事件。那是旧的AWT代码。
在Swing中,您应该使用Key Bindings
。 Key Bindings
将允许您监听按键击,即使该组件没有焦点。
阅读有关How to Use Key Bindings的Swing教程的部分,以了解更多信息。>>