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

标签 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();
    }
}

最佳答案

您不应该为此使用 KeyListener。

相反,您应该使用按键绑定(bind),并且应该将绑定(bind)添加到根 Pane 。请参阅Key Bindings了解更多信息。由于绑定(bind)已添加到根 Pane ,因此应该在创建框架时完成此操作,以便您可以访问该框架。

关于java - KeyListener 不能与 dispose() 一起使用;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8639054/

相关文章:

Java Swing JComboBox 不可编辑

Java Graphics2D AffineTransform 图像旋转

java - 重新绘制 JPanel

Java KeyListener 未检测到所有按下的箭头键

java - 为什么 JSON Web Token (JWT) 在不知道 key 的情况下解密

java - 二分查找算法的问题

java - 防止扫描仪读取 Java 中的剩余输入

java - java中的ActionListener在第二次单击时执行操作

java - 如果窗口不在顶部,则听击键

java - 如何使用 apache.commons 中的 Factory?