大家好,我是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。
答案 0 :(得分:0)
尝试使用int myrand = rand.nextInt(root.getChildren().size());
。
之所以会这样,是因为您的myrand
变量大于root
组中的节点数。