要显示以下代码的模态对话框:
val dialogStage:Stage = new Stage();
dialogStage.initOwner(ownerStageWindow)
dialogStage.initModality(javafx.stage.Modality.WINDOW_MODAL);
val scene = new Scene(...)
dialogStage.setScene(scene)
dialogStage.show();
但是在哪里以及如何获得所有者的舞台? 如果我使用JFXPanel作为根组件来嵌入JavaFX应用程序,则没有主要阶段。
答案 0 :(得分:0)
将一个空值传递给initOwner(因为你的对话框是APPLICATION_MODAL,而不是WINDOW_MODAL,它的副作用可能不会太激烈)。
OR
为对话框场景创建一个JFrame,其中包含另一个JFXPanel。
答案 1 :(得分:0)
获得JFXPanel的舞台:
Field f = JFXPanel.class.getDeclaredField("stage");
f.setAccessible(true);
stage = (Window)f.get(fxPanel);
但重要的是要注意,你得到的东西不一定是舞台的一个实例。它将是Window(Stage的超类)的一个实例。对于swing应用程序,它将返回一个EmbeddedWindow实例(不是Stage)。
或者说明这个技术问题:如果你有一个纯JavaFx应用程序,你将只有一个Stage。如果我错了,请纠正我。
因此,要显示模态窗口,您可以传递Window实例,如代码示例中所示,或传递null。