java - 我如何在 java 中向我的 Gui 添加一个按键监听器

标签 java swing keylistener

我有一个简单的 Gui

public Gui(){
    ablak = new JFrame("Snake game");
    ablak.setVisible(true);
    ablak.setSize(new Dimension(600,600));
    ablak.setFocusable(true);
    ablak.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ablak.add(new Grid());
    ablak.add(new Key());
}

还有一个用于监听关键事件的关键类

package snake;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Key implements KeyListener {

    @Override
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_UP){
            System.out.println("Hi");
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void keyReleased(KeyEvent e) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }


}

正如您所看到的,按向上箭头键应该会说出类似 Hi 的内容,但什么也没有发生。 如果我尝试在 Gui 类中添加(new Key()) 则会出现错误。 我做错了什么?

谢谢

最佳答案

您需要使用addKeyListener()方法:

public class Test2 {
    public static void main(String[] args) {
        JFrame ablak = new JFrame("Snake game");
        ablak.setVisible(true);
        ablak.setSize(new Dimension(600,600));
        ablak.setFocusable(true);
        ablak.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ablak.addKeyListener(new KeyListener(){
             @Override
                public void keyPressed(KeyEvent e) {
                    if(e.getKeyCode() == KeyEvent.VK_UP){
                        System.out.println("Hi");
                    }
                }

                @Override
                public void keyTyped(KeyEvent e) {
                    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                }

                @Override
                public void keyReleased(KeyEvent e) {
                    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                }
        });
        ablak.setVisible(true);
    }
}

关于java - 我如何在 java 中向我的 Gui 添加一个按键监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20413910/

相关文章:

java - Swing的KeyListener和多个按键同时按下

java - 静态成员初始化取决于另一个类成员的初始化

java - 面积计算器无法运行,不知道为什么

java - 如何将 List<String> 与 String 进行比较?

java - Java Swing 的文本 API 是否适合显示自动生成的文本?

java - jtable 中整行的删除线

java - JOptionPane.showMessageDialog 等到单击确定?

java - 小程序 - KeyListener 不工作

java - Apache CXF 客户端在测试需要服务器名称指示 (SNI) 的服务器时出错

java - 使用 Java 中的 Rsync 处理密码提示