0
我想使用ControlsFX StatusBar來顯示長時間運行任務的進度。問題是:在下面的代碼中,進度條僅顯示一次,但每次任務運行時控制檯輸出均正常。 我錯過了什麼嗎?ControlsFX StatusBar只顯示一次
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
TilePane root = new TilePane();
Scene scene = new Scene(root, 500, 200);
Button btn = new Button("Start");
StatusBar status = new StatusBar();
status.setPrefWidth(200);
root.getChildren().addAll(btn, status);
primaryStage.setScene(scene);
primaryStage.show();
StatusTestService service = new StatusTestService();
status.progressProperty().bind(service.progressProperty());
status.progressProperty().addListener(inv -> System.out.println(status.getProgress()));
btn.setOnAction(event -> service.restart());
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println(System.getProperty("java.version"));
launch(args);
}
class StatusTestService extends Service <Void> {
@Override
protected Task <Void> createTask() {
return new Task <Void>() {
@Override
protected Void call() throws Exception {
for (int i = 0; i < 10; i++) {
Thread.sleep(100);
updateProgress(i, 9);
}
return null;
}
};
}
}
你說「只顯示一次」是什麼意思?我已經運行了你的代碼示例,它工作正常:每次點擊「確定」按鈕時,進度開始再次從0加載到100。 –
嗯,我只看到藍色欄** **第一次運行代碼時,在隨後的運行中沒有藍條,只有控制檯上的文本輸出。我使用controlsfx 8.40.13和Java 8u131 –