JavaFXのProgressBarが更新されません
環境は Java SE (Java 8 Update 40) on Windows 7
tracker = new TrackBackupService();
tracker.setOnReady((WorkerStateEvent e) -> {
backupUserCancelled = false;
});
tracker.setOnScheduled((WorkerStateEvent e) -> {
backupProgressBar.progressProperty().bind(tracker.progressProperty());
backupPathInProcessingLabel.textProperty().bind(tracker.pathInProcessingProperty());
backupWorkDoneLabel.textProperty().bind(tracker.workDoneProperty().asString("%.0f"));
backupTotalWorkLabel.textProperty().bind(tracker.totalWorkProperty().asString("%.0f"));
backupSelectTargetButton.disableProperty().bind(tracker.runningProperty());
backupWarningMessageLabel.visibleProperty().bind(tracker.runningProperty());
backupStartButton.disableProperty().bind(tracker.runningProperty());
backupStopButton.disableProperty().bind(Bindings.not(backupStartButton.disableProperty()));
backupSizeLabel.textProperty().bind(tracker.totalSizeProperty());
backupDirectoryCountLabel.textProperty().bind(tracker.directoryCountProperty().asString());
backupFileCountLabel.textProperty().bind(tracker.fileCountProperty().asString());
backupResultLabel.textProperty().bind(tracker.messageProperty());
});
こちらはサービスクラス(extends Service)のコードです。
updateProgress(_doneCount, _totalCount);
updateMessage("成功:" + _succeededCount + " / " + "失敗:" + _failedCount);
Platform.runLater(() -> {
succeededCount.set(_succeededCount);
succeededFileCount.set(_succeededFileCount);
succeededDirectoryCount.set(_succeededDirectoryCount);
failedCount.set(_failedCount);
failedFileCount.set(_failedFileCount);
failedDirectoryCount.set(_failedDirectoryCount);
totalSize.set(_totalSize);
directoryCount.set(_directoryCount);
fileCount.set(_fileCount);
pathInProcessing.set(_pathInProcessing);
});
このようなコードでプログレスバーを更新しようとしても、描画がされないときがあります。
しかし、ウインドウを最小化して最大化すると、描画が行われます。
プログレスバーを強制再描画するようなメソッドはありますでしょうか?
現象発生時のアニメーションです。
また、UIのスタイルについてはCSSで変更しています。