java - 为 3 个对象设置动画

标签 java swing

我需要绘制一个矩形、圆形和直线,然后对它们进行动画处理(例如,按左键 -> 它(所有对象)向左移动。)

我画这样的物体

class MyCanvas extends JComponent {

int x = 10;
int y = 10;
public MyCanvas()
{
    Action someaction = new AbstractAction(){
        @Override
        public void actionPerformed(ActionEvent e) {
            x+=30;
            //revalidate();
            repaint();
        }
    };
    this.getInputMap().put(KeyStroke.getKeyStroke("SPACE"), someaction);
}        
@Override
public void paintComponent(Graphics g) {
g.drawRect(x,y, 200, 200); 
g.drawOval(x, y, 50, 50);
g.drawLine(x, y, 50, 30);
  }
}

但它不动。

最佳答案

  1. 使用paintComponent(Graphics g)用于 Swing JComponents而不是paint(Graphics g)

  2. 使用KeyBindings对于 KeyEvents用于 Swing JComponents

  3. 将对象(在 paintComponent(Graphics g) 之前准备)放入数组中,在 paintComponent(Graphics g) 中绘制数组中的元素

关于java - 为 3 个对象设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10986784/

相关文章:

java - 在 JList 失去焦点后保留 JList 选择?

Java 三元(内联)运算符 : accesing comparation variables

java - 从 Jenkins 或网站重启 Tomcat

java - 如何将两个不同的任务放入线程中

java - PaintComponent 中的 BufferedImage 始终为 null

java - 获取 JToggleButton 的状态

css - 如何将 CSS 动画嵌入到 JFrame 中?

Java txt 加载代码不起作用,我不知道为什么

java - 日期格式映射到 JSON Jackson

java - volatile boolean 值与原子 boolean 值