当前位置: 首页 > 知识库问答 >
问题:

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

令狐宏浚
2023-03-14

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

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

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

我现在的问题是如何增加每个圆的独特性。例如,如果我要添加每个圆的不同颜色和大小。我该如何实现呢?请帮忙。

共有2个答案

白博赡
2023-03-14

为什么不在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);
}
丁念
2023-03-14

随机性:这一切都取决于你想如何改变它们,如果你想让每个圆都有随机属性,那么就利用数学。rand()方法与circle方法/构造函数相结合,例如:

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;
    }
}

在这种情况下,位置、半径和颜色都是随机的。您可以随时更改我自然使用的值,在本例中,球的大小将从20-49变化,宽度从0-599变化,高度从0-399变化。颜色在4种不同颜色之间是随机的。

NON-RANDOM:但是,如果您想为每个圆专门设置值,您总是可以通过使用list.get(int index)访问这些圆来单独访问它们。您还必须将列表元素强制转换为Circle类型,以便能够使用Circle特定的方法。这里有一个例子:

((Circle)list.get(0)).setRadius(45.3);
((Circle)list.get(1)).setFill(Color.ORANGE);
((Circle)list.get(09).setCenterX(392);

但是,您必须亲自确保列表中的元素是圆才能使用这种方法。您的示例提供了这一点,但是如果您制作了一个更大的程序,并且列表中包含除Circle之外的其他节点,则可能更难获得相同级别的控制。如果列表只用于圆,那么最好将其设置为列表

 类似资料:
  • 问题内容: 我想在Python中创建一个动态对象(在另一个对象内部),然后向其添加属性。 我试过了: 但这没用。 有任何想法吗? 编辑: 我正在从循环遍历值列表的循环中设置属性,例如 在上面的例子中,我会得到,,。 我使用该函数是因为我不知道如何从循环中进行操作。 如何根据上例中的值设置属性? 问题答案: 您可以使用我古老的Bunch配方,但是如果您不想创建“绑定类”,则Python中已经存在一个

  • 我有一个模型类,如下所示: 以及控制器中显示输出的方法: 它确实显示了一个输出,一切都很好: 我想计算每个公司的评级,同时向最终用户显示数据。因此,输出应如下所示: 是否可以将评级列动态添加到公司列表中,或者我应该在数据库中创建评级列,在控制器中更新其方法,迭代findAll()结果,并在用户每次尝试访问/列表endpoint时调用它?

  • 我从消防队拿到了我的文件。目前我在列表中有以下内容: 然后,在下面的方法中,我转换这个列表以放入一个具有所需格式的地图。

  • 我想使用java创建log.html文件,当错误被捕获时,我会将错误转储到html table-row中。我创建了表列,但是当我向它传递任何内容时,我的数据会覆盖列名而不是附加行。我的java代码如下: 以下是writetofile方法:

  • 问题内容: 我正在尝试类似的方法,但是此示例不起作用。 如何制作这样的动态密钥? 问题答案: 方括号: 在JavaScript中,所有数组都是对象,但并非所有对象都是数组。主要区别(而且很难用直接的JavaScript和普通对象来模仿)数组实例维护该属性,以便它反映一个加属性名称的数字值,该属性的名称是数字,并且在转换为数字时其值,是所有此类属性中最大的。这听起来很奇怪,但它只是意味着给定一个数组

  • 我正在尝试编写一个代码,从ArrayList的实例中移除某些对象。 体系结构: null null 代码: