mac os keylistener无法正常工作

时间:2014-08-15 18:40:15

标签: java macos swing keylistener

我的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方法中,我只是(在所有这些方法中测试)一个输出说它正在工作。

我会帮助你。

最好的问候。

1 个答案:

答案 0 :(得分:3)

  1. 您只能请求关注可见GUI上的可见组件。因此,您无法在构造函数中请求焦点。

  2. 无论如何,你不应该使用KeyListener。 Swing旨在与Key Bindings一起使用。阅读How to Use Key Bindings上的Swing教程中的部分。使用键绑定时,组件(始终)不需要具有焦点来响应键绑定。