【问题标题】:java fx vbox IndexOutOfBoundsExceptionjava fx vbox IndexOutOfBoundsException
【发布时间】:2019-08-11 15:54:48
【问题描述】:

大家好,我是 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");

这是完整的错误日志

线程“Timer-0”java.lang.IndexOutOfBoundsException 中的异常:索引:10,大小:2
10蓝色
    在 java.util.ArrayList.rangeCheck(ArrayList.java:653)
    在 java.util.ArrayList.get(ArrayList.java:429)
    在 com.sun.javafx.collections.ObservableListWrapper.get(ObservableListWrapper.java:89)
    在 com.sun.javafx.collections.VetoableListDecorator.get(VetoableListDecorator.java:306)
    在 javafx.collections.FXCollections$UnmodifiableObservableListImpl.get(FXCollections.java:936)
    在 javafxapp.Lighproject$1.run(Lighproject.java:42)
    在 java.util.TimerThread.mainLoop(Timer.java:555)
    在 java.util.TimerThread.run(Timer.java:505) 

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

【问题讨论】:

  • labels一个FX:ID
  • 如果您要使用相同的样式更改所有标签,请给 VBox 一个 FX:ID 并获取它的孩子。
  • 已经给出了每个节点的 id
  • 看来你需要做一些基本的 JavaFX FXML 教程。
  • 显然是线程问题。但是不知道热改代码:)

标签: javafx indexoutofboundsexception scenebuilder gluon


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-09-30
    • 1970-01-01
    • 2016-11-15
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    相关资源
    最近更新 更多