我无法弄清楚如何在JavaFX中创建模态窗口.基本上我有文件选择器,我想在用户选择文件时询问用户.我需要这些信息才能解析文件,因此执行需要等待答案.
我已经看到了这个问题但是我无法找到如何实现这个行为.
Krz*_*zyk 68
在我看来,这不是一个好的解决方案,因为父窗口始终处于活动状态.
例如,如果您想在单击按钮后打开窗口作为模态...
private void clickShow(ActionEvent event) {
Stage stage = new Stage();
Parent root = FXMLLoader.load(
YourClassController.class.getResource("YourClass.fxml"));
stage.setScene(new Scene(root));
stage.setTitle("My modal window");
stage.initModality(Modality.WINDOW_MODAL);
stage.initOwner(
((Node)event.getSource()).getScene().getWindow() );
stage.show();
}
Run Code Online (Sandbox Code Playgroud)
现在你的新窗口是REALY模态 - parent是块.你也可以使用
Modality.APPLICATION_MODAL
Run Code Online (Sandbox Code Playgroud)
jew*_*sea 44
以下是我之前为JavaFX 2.1中的模态对话框创建的解决方案的链接.该解决方案在当前阶段的顶部创建一个模态阶段,并通过对话框控件的事件处理程序对对话框结果执行操作.
更新
先前链接的解决方案使用日期事件处理程序方法在对话框被解除后采取行动.该方法适用于JavaFX之前的2.2实现.对于JavaFX 8+,不需要事件处理程序,而是使用新的Stage showAndWait()方法.例如:
Stage dialog = new Stage();
// populate dialog with controls.
...
dialog.initOwner(parentStage);
dialog.initModality(Modality.APPLICATION_MODAL);
dialog.showAndWait();
// process result of dialog operation.
...
Run Code Online (Sandbox Code Playgroud)
需要注意的是,为了使预期的东西的工作,它初始化舞台的主人是重要和对舞台的方式初始化要么WINDOW_MODAL或APPLICATION_MODAL.
JavaFX 8和ControlsFX中有一些高质量的标准UI对话框,如果它们符合您的要求,我建议使用它们而不是开发自己的.那些内置的JavaFX Dialog和Alert类也有initOwner和initModality和showAndWait方法,因此您可以根据需要设置它们的模态(请注意,默认情况下,内置对话框是应用程序模式).
| 归档时间: |
|
| 查看次数: |
73502 次 |
| 最近记录: |