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