データベースから値を読み込み、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)の使用方法を教えてください。 私は自分のメソッドで必要な時間を計算してから、その時間にスレッドをスリープさせる必要があります。そして、プロジェクトcontaintsのためにBorderPane Layoutを使用しなければなりません。 以下のエラーが発生しました: スレッド "Thread-5"の例外java.lang.IllegalStateException:FXアプリケーションスレッドではありません。 currentThread = Thread-5 –
この例の 'Thread.sleep(2000);'の使用は単なる例であったためです。時間を取るために内部に何もなければ、進行中のペインはそれをテストしている間は十分に長く見えません。あなたはそれを必要としません。エラーに関しては、 'Task'の中にこれらの行を含めるように質問を編集できますか? FXノードとペインを自分の 'Platform.runLater()'内で変更する行を置く必要があります。 –
Mathews、自分のプロセスを含むコードを追加しました。デバイスから値を読み取るプロセスは、それをUIに表示します。 –