java - 有没有办法扩展 fxml 控制器
问题描述
我正在构建一个应用程序,我想在应用程序的每个页面中放入文本“你好”,标签上写着现在连接的客户端的名称,我该怎么做???例如:如果我现在已连接,在应用程序所有页面的顶部我会看到你好 Nadeen
解决方案
使用组合,而不是继承。
继承是试图实现这样的事情的错误概念。而是为此添加创建父布局并添加功能以在其中显示内容。
例子:
public class ParentController {
@FXML
private StackPane container;
public void setContent(Node content) {
// replace old container content
container.getChildren().setAll(content);
}
// code for setting the name...
}
<VBox>
<children>
<Label text="Nadeen"/>
<StackPane fx:id="container" VBox.vgrow="ALWAYS"/>
<children>
</VBox>
这允许您将内容替换为加载不同 fxml 文件的结果。
ParentController controller = ...;
controller.setContent(someNode);
...
controller.setContent(someOtherNode);
确保按照此处所述正确访问控制器:
您也可以使用自定义组件方法...
推荐阅读
- python - 负数高于 x 轴的 Matplotlib 条形图
- python - 如果其他单元格包含“某物”,如何在 2 个单元格中设置值
- c# - 动态创建的标签和文本框不会覆盖
- amazon-web-services - AccessToken 中的 Xamarin / .Net Cognito 范围
- spring-mvc - 在 Eclipse 中运行 Spring 应用程序时出现错误:-
- jenkins - Bitbucket 分支源插件 webhook 的非默认端口
- javascript - 尝试访问数组内部的数组时感到困惑。
- python - Python中的函数调用错误
- java - 从工具栏隐藏元素,在单个活动上实现,在各种片段上
- mapping - (重新)在 qutebrowser 中定义命令