java fx vbox IndexOutOfBoundsException - PullRequest
       18

java fx vbox IndexOutOfBoundsException

0 голосов
/ 20 марта 2019

Эй, ребята, я новичок в Java FX. Мой код меняется дизайн этикеток с выводом функции rand (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 циклом и выдает ошибку. И это моя Иерархия конструктор глюонных сцен Eror принадлежит топ Vbox.

1 Ответ

0 голосов
/ 26 марта 2019

Попробуйте использовать int myrand = rand.nextInt(root.getChildren().size());.

Это происходит потому, что ваша переменная myrand больше, чем количество узлов в группе root.

...