我使用下面的代码显示加载任务的进度指示器。我使用来自ControlsFX进度指示器的MaskerPane。 但是当我使用该组件时,maskerpane只显示了一次..请建议一种更好的显示进度指示器的方法。
@FXML
private MaskerPane progressPane;
@FXML
private void addMemberSelect() {
Task task = new Task<Void>() {
@Override
protected Void call() throws Exception {
progressPane.setVisible(true);
return null;
}
@Override
protected void succeeded(){
super.succeeded();
content.setContent(null);
ScreensController colllectScreenController = new ScreensController();
colllectScreenController.loadScreen(Screens.ADD_MEMBER);
colllectScreenController.setScreen(Screens.ADD_MEMBER);
content.setContent(colllectScreenController);
progressPane.setVisible(false);
}
};
new Thread(task).start();
}
答案 0 :(得分:1)
此示例可以为您提供帮助。
public class MaskerPaneTest extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
MaskerPane progressPane = new MaskerPane();
progressPane.setVisible(false);
Button button = new Button("Show");
button.setOnAction(event -> {
Task task = new Task<Void>() {
@Override
protected Void call() throws Exception {
progressPane.setVisible(true);
Thread.sleep(2000);
return null;
}
@Override
protected void succeeded(){
super.succeeded();
progressPane.setVisible(false);
}
};
new Thread(task).start();
});
VBox box = new VBox(button, progressPane);
box.setAlignment(Pos.CENTER);
Scene scene = new Scene(box, 200, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
} 资料来源:https://gist.github.com/TheItachiUchiha/13f8cc637872ebac4385f92cd16075a7
我测试了它并且效果很好,所以你可以适应它。