【发布时间】:2015-03-08 02:53:31
【问题描述】:
我遇到了一个小问题,我不确定该怎么做。
我的应用程序将有一个通用应用程序阶段,它将向用户展示他们的工作选项 - 即任务列表或类似的东西。
当用户选择这些选项之一时,我将导航到窗口以执行工作。他们希望总的舞台永远开放,并为要完成的工作打开另一个舞台。我可以这样做:
FXMLLoader loader = new FXMLLoader();
Parent node = loader.load(this.getClass().getResource("MyView.fxml").openStream());
Scene scene = new Scene(node);
Stage stage = new Stage();
stage.setTitle("You are working on - Blah Blah Blah....");
stage.setScene(scene);
stage.show();
这提供了所需的外观和感觉 - 但是当显示模式窗口时,我似乎遇到了线程问题。
例如 - 在一个工作窗口中,我启动一项服务并显示一个 ControlsFX 进度对话框,如下所示:
ProgressDialog progDiag = new ProgressDialog(service);
progDiag.setTitle("Busy");
progDiag.setHeaderText("Doing the work you asked me to do....");
service.start();
让我们假设这是一个正在检索大量数据的服务器调用 - 所以在处理这个过程时,我想转移到另一个开放的阶段来处理它。但是我不能,因为整个应用程序的 UI 都被这个控件阻止了。
其次,假设某个阶段发生错误,我们会显示警报:
Alert error = new Alert(AlertType.ERROR);
error.setContentText("Something bad just happened....");
error.show();
这还会阻止整个用户界面,而不仅仅是出现问题的阶段。
Java FX 中是否有办法在新进程/线程中打开不会被其他阶段的警报阻塞的阶段?
【问题讨论】:
标签: javafx-8 alerts controlsfx