Java:KeyLIstener和paintComponent没有合作

时间:2015-01-21 22:41:13

标签: java graphics

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

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

  2. 面板--->包含paintComponent方法和将对象移动到屏幕上的方法(我甚至记得把repaint();)

  3. 输入--->实现KeyListener并调用面板

  4. 中的动画方法

    在输入类中,我有if个陈述:

    if (e.getKeyCode() == KeyEvent.VK_D) {
      new panel().animation();
    }
    

    这是面板类中的动画方法

    public void animation() {
      playerX += 10;
      System.out.println(playerX);
      repaint();
    }
    

    当我编写程序时,我知道动画方法正在运行,因为它正在向控制台输出 playerX (它增加了预期的时间),但重绘( ); 命令被忽略了!我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的KeyListener每次收到panel事件并在其上调用VK_D时都会创建新的animation()。这不太可能是你想要的。它应该始终在同一个animation()对象上调用panelpanel是应用程序UI中的可见组件。