gpt4 book ai didi

java - 我的关键监听器出了什么问题?它根本不进入按下的按键

转载 作者:行者123 更新时间:2023-12-02 02:50:49 24 4
gpt4 key购买 nike

public class Maze extends JPanel
{

int x = 0;
int y = 0;
int previousX = x;
int previousY = y;

public Maze()
{
setBackground(Color.WHITE);

addKeyListener(new ArrowListener());
setPreferredSize(new Dimension(200, 200));
setFocusable(true);
requestFocusInWindow();
}

public void paintComponent(Graphics page)
{
super.paintComponent(page);
page.setColor(Color.WHITE);
page.fillRect(previousX, previousY, 10, 10);
page.setColor(Color.magenta);
page.fillRect(x, y, 10, 10);

}

private class ArrowListener implements KeyListener
{

public void keyPressed(KeyEvent event)
{
System.out.println("pressed");
previousX = x;
previousY = y;

switch(event.getKeyCode())
{

case KeyEvent.VK_W:
if(y >= 0)
y--;
System.out.println("up");
break;

case KeyEvent.VK_S:
if(y <= 100)
y++;
System.out.println("Down");
break;

case KeyEvent.VK_A:
if(x >= 0)
x--;
System.out.println("Left");
break;

case KeyEvent.VK_D:
if(x <= 100)
x++;
System.out.println("Right");


}
repaint();
}

public void keyReleased(KeyEvent event){}

public void keyTyped(KeyEvent event){}

}
}

println 行根本不打印,表明它甚至没有进入 keyPressed 方法。我究竟做错了什么?它应该做的就是在屏幕上移动一个矩形。

最佳答案

import javax.swing.JFrame;

public class Main {

static Maze m = new Maze();
static JFrame frame = new JFrame();

public static void main(String[] args) {
frame.setSize(300, 300);
frame.add(m);
frame.pack();
frame.setVisible(true);
}

}

我快速编写了这个主类并测试了您的代码。它对我有用。

关于java - 我的关键监听器出了什么问题?它根本不进入按下的按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43856422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com