Java: KeyLIstener 和 paintComponent 不合作

Java: KeyLIstener and paintComponent not cooperating

我一直在尝试制作一个 java 在屏幕上显示圆圈的程序。我有三个 classes:

  1. 首先 ---> 初始化框架并从输入添加关键侦听器。

  2. panel ---> 包含 paintComponent 方法和将对象移过屏幕的方法(我什至记得放 repaint(); )

  3. 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.

中的可见组件