java fx vbox IndexOutOfBoundsException

java fx vbox IndexOutOfBoundsException

大家好,我是 java fx 的新手。我的代码更改 使用 rand func(1-16) 的输出标记设计。 最初我的代码没有错误,但我想要我的设计 自动调整响应页面大小,所以我将 16 标签放在 Vbox 中 它现在是一个响应式页面。问题从这里开始。我不 弄清楚如何通过代码访问 vbox。我的代码无法访问 标签并给出错误。当我把我的标签放在 vbox 代码之外时 又开始工作了。我想知道使用 vbox 是否合适? 如有任何建议,我们将不胜感激。

int myrand = rand.nextInt(15)+1;
System.out.println(myrand + "blue");
root.getChildrenUnmodifiable().get(myrand).setStyle("-fx-background-color: blue"); 

但是;代码指向这一行,行号上没有任何错误符号。

root.getChildrenUnmodifiable().get(myrand).setStyle("-fx-background-color: blue");

这是完整的错误日志

Exception in thread "Timer-0" java.lang.IndexOutOfBoundsException: Index: 10, Size: 2
10blue
    at java.util.ArrayList.rangeCheck(ArrayList.java:653)
    at java.util.ArrayList.get(ArrayList.java:429)
    at com.sun.javafx.collections.ObservableListWrapper.get(ObservableListWrapper.java:89)
    at com.sun.javafx.collections.VetoableListDecorator.get(VetoableListDecorator.java:306)
    at javafx.collections.FXCollections$UnmodifiableObservableListImpl.get(FXCollections.java:936)
    at javafxapp.Lighproject.run(Lighproject.java:42)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505) 

如您所见,它使用 1 个循环并给出错误。这是我的层次结构 gluon scene builder 错误属于顶部 Vbox。

尝试使用 int myrand = rand.nextInt(root.getChildren().size());

发生这种情况是因为您的 myrand 变量大于 root 组中的节点数。