gpt4 book ai didi

modal-dialog - JavaFX 2.2 模态窗口对话框 *with* FXML

转载 作者:行者123 更新时间:2023-12-01 02:32:08 26 4
gpt4 key购买 nike

我正在尝试使用@jewelsea at this gist 提供的示例我被卡住了,因为我正在使用 FXML。

我看过这两个帖子:How to create a modal window in JavaFX 2.1this answer to JavaFX 2 modal window .

我被困在jewelsea的代码中,它说:

final WebView webView = new WebView(); 
webView.getEngine().load("http://docs.oracle.com/javafx/");
primaryStage.setScene(new Scene(webView));

然而,由于我使用的是 FXML,我这样做:
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MyFXML.fxml"));
Scene scene = (Scene)fxmlLoader.load();
myController = fxmlLoader.getController();
primaryStage.setScene(scene);

你能告诉我如何修改我的代码(上面的 4 行),使它适用于 Jewelsea 的例子吗?

谢谢!

最佳答案

您通过 FXMLLoader 使用的替换代码而不是 WebView创建的场景示例代码就可以了,不需要修改。

您的代码将根据 fxml 文档显示主要阶段的主场景(对于我的示例,我使用 WebView 作为我的主场景,您不需要它,因此您不需要来自要点)。

您需要的是在您想要显示对话框时 Controller 中的一些触发器。作为一个简单的例子,你可以为你的主场景设置一个 fxml,它只包含一个按钮,然后为 Controller 中的按钮提供一个 ActionHandler(就像在 Introduction to FXML 文档中一样)。

现在,不再像 FXML 简介那样在按下按钮时执行 println,而是调用 dialog.show()类似于 gist 在 WebView 文档加载时所做的方法。应该发生的是,对话框现在将显示在 fxml 生成的场景之上。

您会注意到对话框本身包含一个场景。如果您愿意(这是可选的),您可以使用 fxml 定义场景内容。为此,在对话框构建时,您为对话框内容设置新的 fxml 和新 Controller ,并将为对话框创建的 fxml 场景加载到对话框的舞台中。执行此操作的代码与您用于将主场景的 fxml 加载到 primaryStage 中的代码几乎相同。

试试上面的方法,看看它是否适合你。如果你仍然被卡住,我可能可以按照这个答案的思路创建一个 fxml 特定的 gist 示例。

另请注意,引用的要点是前一段时间写的,现在有一个 showAndWait JavaFX 中的方法,它有助于在进行对话调用时阻止代码的执行,然后允许在不使用要点示例中的某些事件处理程序机制的情况下处理对话的结果。有和没有 showAndWait 的策略都是完全可以接受的解决方案。

关于modal-dialog - JavaFX 2.2 模态窗口对话框 *with* FXML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12539778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com