Window y=new Window(this);
MousePolice police=new MousePolice();
y.setSize(1380, 770);//设置大小
    Timer time=new Timer();//新建计时器
    Mytask task=new Mytask();//新建计时器任务
    task.setFrame(y,1380,750);//和任务中的容器连接
time.schedule(task, 0,20);//每0.2秒钟执行一次任务
y.setAlwaysOnTop(true);//一直在上
y.setVisible(true);//可见
y.addMouseListener(police);
addKeyListener(police);
y.addKeyListener(police);这是主类里面的部分内容
class MousePolice implements MouseListener,KeyListener{
public void mouseClicked(MouseEvent e) {
System.exit(0);
}
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    
    
    
    public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ESCAPE||e.getKeyCode()==KeyEvent.VK_ENTER)
System.exit(0);
}
public void keyReleased(KeyEvent e) {}
}
这是监听器的类里面的内容,为什么按下Enter和ESC不能退出程序?

解决方案 »

  1.   

    由于没有你的全部代码,推测是你的addKeyListener没有explicit parameter,你改为y.addKeyListener试一下看看。我的代码中是有响应的,你可以对比一下,代码如下:import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;import javax.swing.JFrame;
    public class KeyListenerTest 
    {
    public static void main(String[] args)
    {
    JFrame frame = new JFrame();
    frame.setSize(200, 200);
    frame.setVisible(true);
    frame.addKeyListener(new KeyListener()
    { @Override
    public void keyTyped(KeyEvent e) {
    // TODO Auto-generated method stub

    } @Override
    public void keyPressed(KeyEvent e) {
    // TODO Auto-generated method stub
    if (e.getKeyCode() == KeyEvent.VK_ENTER)
    System.exit(0);
    } @Override
    public void keyReleased(KeyEvent e) {
    // TODO Auto-generated method stub

    }

    });
    }
    }
      

  2.   


    如果是JFrame的话是没问题的,但是我用的是window的容器,没办法响应KeyListener……