按键监听器应该上下移动 block ,但是当按下或按住键(w,s)时,它们不会执行任何操作。 这是代码(我省略了与问题无关的其他类)
感谢您的宝贵时间
import java.awt.event.KeyEvent;
import javax.swing.*;
import java.awt.event.*;
public class Test extends JFrame
{
private static final long serialVersionUID = 1L;
JFrame f = new JFrame();
public void Draw()
{
Handler handle = new Handler();
f.addKeyListener(handle);
f.setFocusable(true);
f.requestFocusInWindow();
}
public static void main(String[] args)
{
JFrame f = new JFrame();
f.setSize(400, 250);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
class Handler extends JFrame implements KeyListener
{
private static final long serialVersionUID = 1L;
public void keyTyped(KeyEvent e)
{
}
@Override
public void keyPressed(KeyEvent e)
{
if ((e.getKeyCode() == KeyEvent.VK_S))
{
System.out.println("testw");
}
if ((e.getKeyCode() == KeyEvent.VK_W))
{
}
}
@Override
public void keyReleased(KeyEvent e)
{
if ((e.getKeyCode() == KeyEvent.VK_UP))
{
}
if ((e.getKeyCode() == KeyEvent.VK_DOWN))
{
}
}
}
}
最佳答案
JFrame ( all Top-Level Containers ) 默认情况下不会对 KeyEvent from KeyListener 使用react,则无法将
KeyListener
添加到JFrame
,请使用 KeyBindings相反您可以添加KeyListener至 JPanel (JPanel.setFocusable(true)) ,但在这种情况下也使用
KeyBindings
KeyListener
是同时三个或更多KeyPressed
的Keys Shortcuts
的正确监听器
关于Java keylistener 不执行任何操作,但程序仍然运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734484/