KeyListener不能与dispose()一起使用;

时间:2011-12-26 20:56:13

标签: java swing keylistener

当用户按下转义键并打开一个新窗口时,我试图关闭一个窗口。出于某种原因,当我添加dispose();对于关键的倾听者来说,它不起作用。

有关如何解决这个问题的想法吗?

提前致谢!

以下是代码:

public class About extends JPanel implements KeyListener{

Font menu = new Font("SansSerif", Font.BOLD, 12);
Font title = new Font("SansSerif", Font.BOLD, 14);
Font version = new Font("Monospaced", Font.ITALIC, 12);
boolean falling = false;

public About() {

    JFrame frame = new JFrame("Tiny Runner");
    frame.add(this);
    frame.setBounds(0, 0, 800, 600);
    frame.addKeyListener(this);
    frame.setFocusable(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);
    frame.setVisible(true);
    }
public void keyPressed(KeyEvent keyEvent) {
    if (keyEvent.getKeyCode() == KeyEvent.VK_ESCAPE) {
            new MainMenu();
            dispose();
    }
}

2 个答案:

答案 0 :(得分:3)

您不应该为此使用KeyListener。

相反,您应该使用键绑定,并且应该将绑定添加到根窗格。有关详细信息,请参阅Key Bindings。由于绑定已添加到根窗格,因此应在创建框架时执行此操作,以便您可以访问框架。

答案 1 :(得分:0)

为什么在拨打电话时知道该怎么办?应该处理什么?

你应该使框架成为一个类变量,然后像frame.dispose();

一样调用dispose