JavaFX – 如何专注于一个阶段
我的应用程序有一个主应用程序Stage,可以从中打开第二个窗口.我只想关注一个阶段.
我有2个问题需要解决: 1 – 如何只关注第二阶段(fileChooser OpenDialog)?即,在用户点击“打开”或“取消”之前,我无法切换到主应用程序阶段. 2 – 在关闭主舞台之前,我怎样才能让用户关闭第二阶段? 现在,我可以在第二阶段(OpenDialog)仍在运行时关闭主窗口. 谢谢. 解决方法
您可以使用
Modality和
Ownership阶段的组合.
subStage.initOwner(stage) – >确保子站与其所有者一起移动. subStage.initModality(Modality.WINDOW_MODAL) – >确保子目录阻止输入事件从其所有者(父)到其根目录传递到所有窗口. 如果要阻止来自同一应用程序的所有窗口的输入事件,也可以使用Modality.APPLICATION_MODAL,除了来自其子层次结构的窗口. Dialog默认采用模态和阻塞方式. Dialog的默认模式是Modality.APPLICATION_MODAL,您可以向其添加initOwner(…). 注意:您不能将上述规则应用于FileChooser.但是,您可以使用 fileChooser.showOpenDialog(stage); 完整的例子 import javafx.application.Application; import javafx.stage.Modality; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) { stage.setTitle("Main Stage"); stage.setWidth(500); stage.setHeight(500); stage.show(); Stage subStage = new Stage(); subStage.setTitle("Sub Stage"); subStage.setWidth(250); subStage.setHeight(250); subStage.initOwner(stage); subStage.initModality(Modality.WINDOW_MODAL); subStage.show(); } public static void main(String[] args) { launch(args); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |