我一直在尝试制作一个在屏幕上显示圆圈的java程序。我有三个班级:
首先--->初始化框架并从输入中添加关键监听器。
面板--->包含paintComponent方法和将对象移动到屏幕上的方法(我甚至记得把repaint();)
输入--->实现KeyListener并调用面板
在输入类中,我有if
个陈述:
if (e.getKeyCode() == KeyEvent.VK_D) {
new panel().animation();
}
这是面板类中的动画方法:
public void animation() {
playerX += 10;
System.out.println(playerX);
repaint();
}
当我编写程序时,我知道动画方法正在运行,因为它正在向控制台输出 playerX (它增加了预期的时间),但重绘( ); 命令被忽略了!我做错了什么?
答案 0 :(得分:1)
您的KeyListener
每次收到panel
事件并在其上调用VK_D
时都会创建新的animation()
。这不太可能是你想要的。它应该始终在同一个animation()
对象上调用panel
,panel
是应用程序UI中的可见组件。