我想创建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
答案 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);
}