我的java keylistner遇到了问题。我不能把它设置为工作。 我尝试了几种方法,但我的窗户似乎没有得到关注。
代码如下(部分)。
public class TicTacTowerShooter extends JPanel implements Runnable,KeyListener {
/**
*
*/
int queenArrayIndex = 0;
TexturePaint tp;
private static final long serialVersionUID = 1L;
private BufferedImage biCastle = new BufferedImage(1024, 1024, BufferedImage.TYPE_INT_RGB);
private BufferedImage biChar = new BufferedImage(50, 50, BufferedImage.TYPE_INT_RGB);
Thread thread;
int posCharX = this.getWidth()/2;
int posCharY;
Shape s;
URL url;
Snakes snakes = new Snakes();
public TicTacTowerShooter(){
setPreferredSize(new Dimension(1024,1024));
setBackground(Color.blue);
thread = new Thread(this);
thread.start();
try{
url = getClass().getClassLoader().getResource("Images/castle.jpg");
biCastle = ImageIO.read(url);
url = getClass().getClassLoader().getResource("Images/shooter.png");
biChar = ImageIO.read(url);
}catch(IOException e){
e.printStackTrace();
}
this.setFocusable(true);
addKeyListener(this);
}
然后在keyListener方法中,我只是(在所有这些方法中测试)一个输出说它正在工作。
我会帮助你。
最好的问候。
答案 0 :(得分:3)
您只能请求关注可见GUI上的可见组件。因此,您无法在构造函数中请求焦点。
无论如何,你不应该使用KeyListener。 Swing旨在与Key Bindings
一起使用。阅读How to Use Key Bindings上的Swing教程中的部分。使用键绑定时,组件(始终)不需要具有焦点来响应键绑定。