我一直在尝试制作一个在屏幕上显示圆圈的java程序。我有三节课:
-
首先--->初始化帧并从输入中添加密钥侦听器。
-
面板--->包含paintComponent方法和将在屏幕上移动对象的方法(我什至记得放repaint();
-
输入--->实现按键侦听器并在面板中调用动画方法
在输入类中,我有以下if
语句:
if (e.getKeyCode() == KeyEvent.VK_D) {
new panel().animation();
}
下面是面板类内部的动画方法:
public void animation() {
playerX += 10;
System.out.println(playerX);
repaint();
}
当我运行程序时,我知道动画方法正在运行,因为它将 playerX 输出到控制台(它像预期的那样增加了时间),但 repaint(); 命令被忽略了!我做错了什么?
您的KeyListener
每次收到VK_D
事件时都会创建一个新panel
,并在此基础上调用animation()
。 这不太可能是你想要的。 它可能应该始终在同一个panel
对象上调用animation()
该对象panel
应用程序 UI 中的可见组件。