【发布时间】:2016-09-19 07:43:44
【问题描述】:
我有一个应用程序,其中包含带有标题和菜单的 HomeScene.fxml 文件。 HomeScene 也有dashboardPane,它应该在菜单按钮被按下后动态改变。仪表板窗格内容应从另一个 fxml 文件加载,例如“FinancesPane.fxml”或“SettingsPane.fxml”。
我正在尝试替换 HomeController 中 dashboardPane 的内容:
@FXML
public void handleFinancesButtonAction() {
FinancesPaneFactory paneFactory = new FinancesPaneFactory();
dashBoardPane.getChildren().clear();
dashBoardPane.getChildren().add(paneFactory.createPane());
}
我的 FinancesPaneFactory 如下所示:
public class FinancesPaneFactory extends PaneFactory {
private static final String PANE_TEMPLATE_PATH = "/sceneTemplates/FinancesPane.fxml";
public FinancesPaneFactory() {
super(PANE_TEMPLATE_PATH );
}
@Override
protected Pane generatePane(FXMLLoader loader) {
try {
return (Pane) loader.load();
} catch (IOException e) {
throw new FatBirdRuntimeException("Unable to load FinancesPane", e);
}
}
}
更清楚地说,这就是 HomeScene 的样子:HomeScene。 这个空白区域是一个dashboardPane,当用户按下左侧菜单按钮时应该用另一个内容替换。
如何动态注入这些内容?
【问题讨论】:
-
dashBoardPane 是 BorderPane?如果是,您应该使用类似 dashBoardPane.setCenter(pane) 的方法
-
dashBoardPane 是一个 AnchorPane。