У меня есть метод, который считывает значения из базы данных и возвращает Map<Integer,String>.
. Этот метод занимает некоторое время, чтобы вернуть карту.JavaFX: отключить все компоненты во время выполнения процесса и показать индикатор прогресса
До тех пор, пока значения не будут считаны. Я хочу индикатор прогресса (только индикатор заполнения, такой как индикатор, будет достаточным, нет необходимости в индикаторе выполнения), который будет отображаться на экране, а все остальные компоненты должны быть отключены до тех пор, пока индикатор времени не будет показано на рисунке.
public void scanDevice() {
ObservableList<TextField> list = FXCollections.observableArrayList(vehicleId, vehicleName, deviceType,
offboardBroker1, offboardBroker2, postfixQueue, pKIServer);
editedValuesMap.clear();
// devicePlugged = true;
if (cbChooseProject.getSelectionModel().getSelectedItem() != null) {
try {
devicePlugged = dsAdapter.getAdapter();
if (devicePlugged) {
if (bScanDevice.isFocused()) {
readMap = new HashMap<Integer, String>();
//Process Start
readMap = dsAdapter.initScan();
//Process End
if (!readMap.isEmpty() && readMap != null) {
isWritten = true;
isDeviceSideEnabled();
editDeviceContents.setDisable(false);
vehicleId.setText(readMap.get(0));
vehicleName.setText(readMap.get(1));
deviceType.setText(readMap.get(2));
offboardBroker1.setText(readMap.get(3));
offboardBroker2.setText(readMap.get(4));
postfixQueue.setText(readMap.get(5));
pKIServer.setText(readMap.get(6));
lContentsSerialNo.setText(readMap.get(7));
}
}
}
Не могли бы вы рассказать мне, что использовать этот Thread.sleep (2000); Нужно ли вычислять время, требуемое моим методом, а затем спать поток за это время и из-за ограничений проекта я должен использовать макет BorderPane. Я получаю следующее сообщение об ошибке: Исключение в теме "Thread-5" java.lang.IllegalStateException: не на потоке приложения FX; currentThread = Thread-5 –
Использование 'Thread.sleep (2000);' в примере было просто потому, что это пример. Без чего-либо внутри, чтобы занять время, область прогресса не будет видна достаточно долго, проверяя ее. Вам это не нужно. Что касается ошибки, можете ли вы отредактировать вопрос, чтобы включить эти строки в 'Задача'? Вам нужно поместить ваши строки, которые изменяют узлы и панели FX в пределах их собственной 'Platform.runLater()'. –
Mathews, я добавил код, содержащий мой процесс. Значения считывания процесса с устройства a отображают его в пользовательском интерфейсе. –