ArrayList包含移动的圆圈

时间:2014-03-06 14:31:03

标签: java arraylist

public class second extends JPanel implements ActionListener {

  ArrayList<Ellipse2D.Double> circles = new ArrayList<Ellipse2D.Double>();
  Timer t = new Timer(5, this);
  double x=0, y=0, velX=1, velY=1;   

  circles.add(new Ellipse2D.Double(x,y,10,10));

  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D) g;
    for(Ellipse2D.Double k : circles){
        g2.draw(k);
    }
    g2.fill(k);
    t.start();
  }
}

public void actionPerformed(ActionEvent e) {
  if (x < 0 || x > 560) {
    velX = -velX;
  }
  if (y <0 || y >360){
    velY = -velY;
  }
  //x+= velX;
  y += velY;
  repaint();
}

我尝试过这样做,但是没有用,我知道如何绘制它们并让它们移动但是我认为我的问题是初始化arraylist

错误:此行有多个标记      - 令牌“add”上的语法错误,=之后的预期      这个标记      - 令牌上的语法错误,错放的构造(s) 这个错误是我添加圆圈的地方

3 个答案:

答案 0 :(得分:1)

您只能在另一个方法中执行add方法。 所以你应该移动这部分:

circles.add(new Ellipse2D.Double(x,y,10,10));

一种方法。

答案 1 :(得分:0)

此代码不起作用。

  • 如果你想让ActionListener做东西,你需要将它添加到像JButton这样的组件中。但我猜你也许想要一个MouseListener? (使用mouselistener,您可以为您的类编写构造函数,并将mouselistener添加到您的窗口。)
  • 正如'Jakub Hr'所说,你需要编写一个方法,比如'createCircle',你可以在这里添加新的圆圈到你的数组。

(另请注意,您的班级名称没有资本。这可能是类型错误。)

答案 2 :(得分:0)

circles.add(new Ellipse2D.Double(x,y,10,10));

应该是某种方法。

此外,方法public void actionPerformed(ActionEvent e)在类之外。检查{}

相关问题