我不知道这里有什么问题,我刚刚开始编码,我在互联网上搜索过,找不到答案,请不要让答案听起来很复杂。谢谢 我正试图制作一个类似马里奥的游戏而且似乎挡路了,但很快我就会好起来
int x, y;
public class AL extends KeyAdapter {
public void keyPressed(KeyEvent e) {
int KeyCode = e.getKeyCode();
if(KeyCode == e.VK_LEFT) {
x--;
}
if(KeyCode == e.VK_RIGHT) {
x++;
}
if(KeyCode == e.VK_UP) {
y--;
}
if(KeyCode == e.VK_DOWN) {
y++;
}
}
public void KeyReleased(KeyEvent e) {
}
}
public Wesley() {
addKeyListener(new AL());
setTitle("Wesley and the interuption");
setSize(500, 500);
setResizable(false);
setVisible(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
x = 150;
y = 150;
}
@Override
public void paint(Graphics g) {
g.fillOval(x, y, 15, 15);
repaint();
}
public static void main(String[] args) {
new Wesley();
}
答案 0 :(得分:3)
{/ 1}}方法中 repaint()
。您可能希望使用paint
方法之一。
您在keyXxx
方法中通过而不是调用super.paint(g);
打破了颜料链。所以一定要打电话给它。
paint
还可以使用@Override
public void paint(Graphics g) {
super.paint(g);
}
注释,以便您知道正确覆盖了某个方法。此@Override
不是密钥发布功能的有效覆盖。你的外壳是错的。所以关键版本什么都不做。
附注
使用带有Swing应用程序的Key Bindings查看特定的关键功能。您可能会遇到KeyReleased
请参阅Performinf Custom Painting。最好在KeyListener
或JComponent
和JPanel
@Override
上进行绘制,并调用paintComponent
和不 super.paintComponent
。
从Event Dispatch Thread运行Swing应用。请参阅Intial Threads。
paint
setVisible
之后。我打赌你想知道为什么你的ui在左上角闪烁,他们移动到中心。 这就是原因。