Есть ли возможность показать индикатор хода (вращение, не застревание), пока какой-то тяжелый подъем делается в javafx ui thread?Показать ProgressIndicator во время тяжелой работы в потоке графического интерфейса должно быть сделано
Backstory: Ive получил для загрузки довольно большой таблицыView в TitledPane (который занимает несколько секунд). Команда, которая делает все это отставание, - TitledPane.setContent (myTableView). Так что я хочу хотя бы показать анимацию или индикатор загрузки за это время.
Так прямо сейчас я делаю следующее, чтобы дать Ui нить достаточно места для дыхания, чтобы показать свою загрузку анимации, прежде чем делать дорогой звонок:
showMyLoadingAnimation();
PauseTransition pause = new PauseTransition(Duration.seconds(1));
pause.setOnFinished(event -> {
setContent(myTableView);
});
pause.play();
dismissMyLoadingAnimation();
это работает получить индикатор выполнения, показанный, но как только Нить ui начинает работать над setContent, и он застревает.
ive видел, как некоторые люди используют качели, чтобы отобразить простоя или диалог с анимацией, чтобы она работала в другом потоке и не застревала, но пока не смогла найти убедительное решение.
EDIT: Хорошо, я нашел этот корень проблемы. , так что ive получил таблицы prefHeightProperty, связанные с размером списка, отображаемым здесь: JavaFX - Adapt TableView height to number of rows сделал это несколько недель назад, работал, забыл об этом.
, который стоит много времени. поэтому, хотя время вызова при настройке привязки не показывает, что это занимает много времени, поток ui, похоже, имеет огромную проблему с ним, когда таблицы становятся большими.
спасибо james, его ответ будет правильным для большинства людей, сталкивающихся с такой проблемой.
может кто-то пожалуйста прокомментируйте этот вопрос там: JavaFX - Adapt TableView height to number of rows (так как это первый вопрос я не хватает респ еще комментариев.)
'titledPane.setContent (myTableView),' не может быть реально принимать какие-либо заметного времени. Что-то еще, что происходит в коде, занимает время; возможно, загружая данные. Вы должны перенести трудоемкую работу (которая не является действительной работой пользовательского интерфейса) на фоновый поток. –