У меня есть древовидная диаграмма с 300k + элементами, которые мне нужно зациклить.Я ожидал, что это займет некоторое время, но оно доходило до того, что казалось, что оно висит.Я вставил оператор println, чтобы отследить, где я нахожусь, и, действительно, когда он добрался до определенных точек, он останавливался на секунду или три, а затем продолжал.В конце концов (около 140 тыс. Дюймов) он полностью остановился, а затем в конечном итоге самостоятельно завершил программу.
Я пытаюсь создать создателя и средства просмотра древовидной диаграммы для моего проекта.Это n-дерево, но не все ветви будут иметь n-дочерних элементов.Однако, чтобы выровнять его так, как мне нужно, мне нужно составить полное дерево со всеми возможными дочерними элементами до указанных размеров, а затем выполнить итерацию по нему, чтобы проверить размеры, изменить размеры, позиции и существование.
//ArrayList<Button[]> buttons is passed in
double width = 0;
double height = 0;
Group g = new Group();
Scene s = new Scene(g);
Button[] array = buttons.get(buttons.size() - 1);
int temp = 1;
for(int i = 0; i < array.length; ++i) {
Button b = array[i];
g.getChildren().add(b);
g.applyCss();
g.layout();
width = width > b.getWidth() ? width : b.getWidth();
height = height > b.getHeight() ? height : b.getHeight();
g.getChildren().remove(b);
System.out.println(temp++);
}
РЕДАКТИРОВАТЬ (потому что я забыл это сказать): сначала я попробовал цикл для каждого, но у него были те же проблемы, поменял его местами, чтобы посмотреть, был ли он лучше, и получил те же результаты
РЕДАКТИРОВАТЬ: первоисточник лага был получен либо для applyCSS (), либо для layout (), но я остаюсь подозрительным, так как он делает паузу на кажущихся случайными, начиная с 16k, и время от времени на всех остальных, пока не умрет между 170k и 300k.
РЕДАКТИРОВАТЬ: я сделал свое собственное решение, игнорируя кнопки-заполнители и, таким образом, игнорируя почти все в дереве, но я держу это открытым в надежде, что кто-то узнает реальное решение и опубликует его, чтобыдругие могут также извлечь выгоду.Проблема в том, чтобы разобраться, как применить CSS и расположить сотни тысяч узлов, чтобы определить их размер