动态创建对象并将其添加到JavaFX列表中

时间:2016-03-19 16:03:54

标签: java javafx

我想在JavaFX中创建一个动态对象,例如一个圆圈。我的代码就是这样的。

 List<Node> list = new ArrayList<>();

    // Create circle dynamically
    for(int i = 0; i < 10; i++) {
        list.add(new Circle());
    }

我现在的问题是如何添加每个圆圈的唯一性。例如,如果我要添加每个圆的不同颜色和大小。我怎样才能实现它?请帮忙。

2 个答案:

答案 0 :(得分:1)

为什么不在for循环中创建一个新的Circle实例,根据自己的喜好进行修改,然后将其添加到列表中?

List<Node> list = new ArrayList<>();

// Create circle dynamically
for(int i = 0; i < 10; i++) {
    Circle newCircle = new Circle();
    newCircle.setSize(i*2); //Just an example
    list.add(newCircle);
}

答案 1 :(得分:1)

RANDOM:这一切都取决于你想要如何改变它们,如果你想让每个圆圈都有随机属性,那么就可以将seq: 1 4 3 5 2 12 8 6 14 19 7 9 25 20 13 maxSoFar[i-8]: - - - - - - - - 1 4 4 5 5 12 12 mul: - - - - - - - - 14 76 28 45 125 240 156 方法与圆方法结合使用/ constructor,例如:

Math.rand()

以这种方式,位置,半径和颜色都是随机的。您可以随时更改我自然使用的值,在此示例中,球的大小为20-49,宽度为0-599,高度为0-399。颜色在4种不同颜色之间是随机的。

<强>非随机: 但是,如果您想要为每个圈子专门设置值,则可以使用for(int i = 0; i < 10; i++){ Circle circle = new Circle(Math.rand() * 600, Math.rand() * 400, Math.rand() * 30 + 20); list.add(circle); switch((int)(Math.rand() * 4)){ case 0: circle.setFill(Color.GREEN); break; case 1: circle.setFill(Color.RED); break; case 2: circle.setFill(Color.BLUE); break; case 3: circle.setFill(Color.YELLOW); break; } } 来访问圈子,也可以单独访问它们。您还必须将列表元素强制转换为list.get(int index)类型,以便能够使用特定于Circle的方法。这是一个例子:

Circle

但是,您必须亲自确保列表中的元素是使用此类方法的圆圈。您的示例提供了此功能,但是如果您创建一个更大的程序并且该列表包含除Circle之外的其他节点,则可能更难以获得相同级别的控制。如果该列表仅用于圈子,则最好将其设为((Circle)list.get(0)).setRadius(45.3); ((Circle)list.get(1)).setFill(Color.ORANGE); ((Circle)list.get(09).setCenterX(392); 类型。