我想在JavaFX中创建一个动态对象,例如一个圆圈。我的代码就是这样的。
List<Node> list = new ArrayList<>();
// Create circle dynamically
for(int i = 0; i < 10; i++) {
list.add(new Circle());
}
我现在的问题是如何添加每个圆圈的唯一性。例如,如果我要添加每个圆的不同颜色和大小。我怎样才能实现它?请帮忙。
答案 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);
类型。