我正试着做这样的事情,但它不起作用:
@FXML
private AnchorPane content;
@FXML
private void handleButtonAction(ActionEvent event) {
content = (AnchorPane) FXMLLoader.load("vista2.fxml");
}
谢谢你的帮助。
代码不工作的原因
加载器会创建一个新的AnchorPane,但您从不将新窗格添加到场景图中的父窗格中。
快速修复
content = (AnchorPane) FXMLLoader.load("vista2.fxml");
content.getChildren().setAll(FXMLLoader.load("vista2.fxml"));
您可能需要使用布局(例如,使用自动调整布局大小,如StackPanes而不是AnchorPanes),以获得您想要的准确行为。
我建议不要仅仅采用快速解决方法,而是回顾下面链接的简单框架,因为它可能为您提供一个更通用的机制来获得您想要的行为。
参考FXML导航框架
该框架的机制与Kithril的回答中所建议的相同。
为什么要有一个框架
所以我觉得这个案例需要一个小的演示框架。
框架输出示例
第一个屏幕显示了显示第一个Vista的应用程序布局。内容是一个在主应用程序布局中定义的标题和一个aliceblue颜色的可互换子内容窗格。
在找更简单的东西吗?
只需交换掉场景根:在JavaFX中更改场景。
其他选择?
问题内容: 我有2个fxml文件: 布局(标题,菜单栏和内容) Anchorpane(应该放在另一个fxml文件的内容中) 我想知道如何从“主”场景将第二个文件加载到内容空间内。在javaFX中工作是一件好事,还是加载一个新场景更好? 我正在尝试做这样的事情,但是不起作用: 谢谢您的帮助。 问题答案: 为什么您的代码不起作用 加载程序会创建一个新的AnchorPane,但是您绝不会将新窗格添加到场
接口说明 将数据整合到一个地方进行查询,Wish3DEarth团队新增了添加场景的接口,来进行数据的整合操作 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/scene/1.0.0/add 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 title string form 是 场景名称 descrip
问题内容: 我正在构建JavaFX应用程序,我想知道是否有关于如何尽快加载当前新内容的建议(最佳实践)。 当前我正在做的(或多或少)是这样的: 对于加载简单的s,es等的复杂场景而言,上面的方法对于简单的s BUT 来说足够好且快速。 我在的方法中进行的所有初始化。 在那里,我将项目添加到框中,进行初始化等,但是正如我所说的,这花费了太多时间。 难道我做错了什么?我应该在其他地方初始化吗? 谢谢。
所以我有一个游戏对象,它会在必要时加载新场景。附加到游戏对象的脚本有一个变量,该变量保存对画布元素的引用(画布元素有一个进度条)。问题是,在我加载一个新场景并且我想在加载的场景中加载一个新场景后,我失去了对画布对象的引用,因为我无法将他设置为DontDestRoyOnLoad。 我所做的是我把画布元素(参见start函数()中的注释行)作为游戏对象的子元素,它不会被销毁...在我这样做之后,我没有
我的程序有两个场景,,每个都有相应的控制器类。 我希望能够使用Stage的在我的秒控制器类上,在它使用Button的onAction事件和FXMLLoader加载到FirstController类之后。 这是我在秒控制器类上的代码片段: 基于我的第一个控制器类上的,其中的值是一个字符串。 然而,这会输出一个错误: 然后,在第一个控制器类加载第二个控制器类之后,如何在其上使用?