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 –