java fx vbox IndexOutOfBoundsException

时间:2019-03-20 20:17:45

标签: javafx indexoutofboundsexception scenebuilder gluon

大家好,我是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$1.run(Lighproject.java:42)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505) 

如您所见,它可以处理1个循环并给出错误。这是我的层次结构 gluon scene builder Eror属于顶级Vbox。

1 个答案:

答案 0 :(得分:0)

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

之所以会这样,是因为您的myrand变量大于root组中的节点数。