如何创建同一类的多个对象?

时间:2018-03-20 16:15:40

标签: java swing

我想创建Ball类的两个对象。我尝试过以下方法:

public class World extends JPanel {
    JFrame frame = new JFrame("GreenJ");
    Actor[]  actor = new Actor[100];
    int n = 0;
    public World() throws InterruptedException{
        frame.add(this);
        frame.setSize(1000, 1000);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void addObject(Actor a) {
        actor[n] = a;
        frame.add(actor[n]);
    }
}


public class MyWorld extends World {
    public MyWorld() throws InterruptedException {
        addObject(new Ball(frame, 250, 750));
        addObject(new Ball(frame, 750, 250)); 
    }
}


public class Ball extends Actor{
    int x;
    int y;

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        Graphics2D g2d = (Graphics2D) g;

        g2d.fillOval(x, y, 50, 50);
    }

    public Ball(JFrame frame, int a, int b) throws InterruptedException{  
        frame.add(this);

        x = a;
        y = b;
    }

    public void main(String[]Args) {
        repaint();
    }
}

当我运行此代码时,我只在框架中获得第一个“球”。我尝试过其他一些但没有成功的事。

提前谢谢你。 ElAdriano

2 个答案:

答案 0 :(得分:4)

n的值永远不会在您的代码中更改。因此addObject将始终将新对象放在actor数组的索引0中。

答案 1 :(得分:0)

将您的Actor[]更改为ArrayList类型的Actor ,这有助于您忘记添加下一个对象的位置或任何索引n

ArrayList<Actor> actors = new ArrayList<>();

并更改addObject()方法以将对象添加到actors数组

addObject(Actor a){
    actors.add(a);
}