我试图使用由@jewelsea提供的例子,在这个主旨和我坚持,因为我使用FXML。
我已经看到了这两个职位: 如何创建JavaFX中2.1模式窗口和这个答案的JavaFX 2模式窗口 。
当我被困在由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作为我的主场景,你并不需要,所以你不需要任何的WebView相关的代码从要旨)。
你需要的是在您的控制器在要显示一个对话框,在某个时间触发。 举个简单的例子,你可以设置你的主场景中的FXML刚刚包括按钮,然后提供在您的控制器按钮的的ActionHandler(就像在介绍FXML文件)。
现在,而不是仅仅做一个println当按钮被按下的介绍FXML了,叫dialog.show()
一样要点方法在文件的WebView负载时一样。 什么应该发生的是,对话框将现在你FXML生成场景的顶部显示。
你会发现,对话本身包含一个场景。 如果你想(这是可选的),你可以使用FXML定义场景内容。 要做到这一点,在对话框施工时,您为对话内容的新FXML和新的控制器,并加载FXML创建场景对话进入对话的舞台。 要做到这一点的代码几乎相同的代码,您所使用的主场景的FXML加载到primaryStage什么。
试试上面,看看它是否适合你。 如果你还在坚持我也许可以创建沿着这个答案的线主旨的FXML具体例子。
还要注意的是所引用的主旨是前一段时间写的,有一个现在showAndWait在JavaFX的方法进行对话呼叫,然后允许处理对话的结果时,这有利于阻止代码的执行,而无需使用一些事件处理程序从主旨示例机制。 既没有showAndWait战略是完全可以接受的解决方案,虽然。