制作一个包含 objects 的 ArrayList(椭圆、矩形等)

Making an ArrayList containing objects (Ellipses, Rectangles etc.)

我正在为一个学校项目创建一个程序,用户可以在其中使用控制以下元素的大小和颜色的按钮创建一个几何形状(应该看起来像一匹马):一个椭圆、一个圆形、两个矩形和一个字符串(作为图形的标题)。为了保存图形,我想要一个包含所有这些的 ArrayList,所以我创建了一个 class,看起来像这样。

import javafx.scene.shape.Circle;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.Rectangle;

public class WiLi_Horse{

    Ellipse body;
    Rectangle leg1;
    Rectangle leg2;
    Circle head;
    String name;

    public WiLi_Horse(Ellipse bdy, 
            Rectangle lg1, Rectangle lg2, 
            Circle hd, String nme) {

        body = bdy;
        leg1 = lg1;
        leg2 = lg2;
        head = hd;
        name = nme;
    }
}

现在,当我创建 ArrayList 时,我编写了以下内容(在另一个 class 中):

ArrayList<WiLi_Horse> horseList = new ArrayList<>();

然后我想在 ArrayList 中添加一个 'horse',所以我开始输入:

horseList.add(new WiLi_Horse(XXX);

它说 'XXX' 是手头的问题。我不知道从这里开始写什么。 Eclipse的quick-fix是添加null,null,null,null,null,当然不是我想要的

提前致谢。

也许你可以尝试 ListShape,它将接受所有这些:

List<Shape> shapes = new ArrayList<Shape>();

现在你可以添加任何你想添加的形状了:

shapes.add(body);
shapes.add(leg1);
shapes.add(leg2); 

等这是您可以测试的完整示例:

public class WiLi_Horse {
    Ellipse body;
    Rectangle leg1;
    Rectangle leg2;
    Circle head;
    String name;

    public WiLi_Horse(Ellipse body, Rectangle leg1, Rectangle leg2, Circle head, String name) {
        this.body = body;
        this.leg1 = leg1;
        this.leg2 = leg2;
        this.head = head;
        this.name = name;
    }
    public List<Shape> getHorse()
    {
        List<Shape> shapes = new ArrayList<Shape>();
        shapes.add(body);
        shapes.add(leg1);
        shapes.add(leg2);
        shapes.add(head);
        return shapes;
    }
    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "WiLi_Horse{" +
                "body=" + body +
                ", leg1=" + leg1 +
                ", leg2=" + leg2 +
                ", head=" + head +
                ", name='" + name + '\'' +
                '}';
    }
}

现在您可以将其测试为:

public static void main(String[] args) {
        Ellipse ellipse = new Ellipse(10,20);
        Rectangle rect1 = new Rectangle(40,20);
        Rectangle rect2 = new Rectangle(40,20);
        Circle circle = new Circle(5);
        String name = "Horse";

        WiLi_Horse horse1 = new WiLi_Horse(ellipse,rect1,rect2,circle,name);
        WiLi_Horse horse2 = new WiLi_Horse(ellipse,rect1,rect2,circle,name);
        WiLi_Horse horse3 = new WiLi_Horse(ellipse,rect1,rect2,circle,name);
        WiLi_Horse horse4 = new WiLi_Horse(ellipse,rect1,rect2,circle,name);

        List<WiLi_Horse> horseList = new ArrayList<>();
        horseList.add(horse1);
        horseList.add(horse2);
        horseList.add(horse3);
        horseList.add(horse4);
        System.out.println(horseList);
    }