<BorderPane prefHeight="400.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.nikunj.drclinic.controller.RootLayoutController">
<center>
<AnchorPane fx:id="dashboard" BorderPane.alignment="CENTER" />
</center>
<top>
<HBox BorderPane.alignment="CENTER">
<children>
<fx:include fx:id="mainMenu" source="MainMenuBar.fxml" />
</children>
</HBox>
</top>
</BorderPane>
为此使用的控制器是RootLayoutController.java
public class RootLayoutController {
@FXML
private MainMenuBarController mainMenuBarController;
@FXML
private AnchorPane dashboard;
@FXML
private void initialize() {
// Initialize the person table with the two columns.
}
}
从这个MainMenubar.fxml文件内部也会加载,它是子fxml文件
<AnchorPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.nikunj.drclinic.controller.MainMenuBarController">
<children>
<MenuBar layoutY="2.0" prefWidth="1000.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<menus>
<Menu mnemonicParsing="false" text="File">
<items>
<MenuItem mnemonicParsing="false" onAction="#closeApplication" text="Close" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Patient Detail">
<items>
<MenuItem fx:id="addPatiendMenuItem" mnemonicParsing="false" onAction="#addPatient" text="Add Patient" />
<MenuItem mnemonicParsing="false" text="Find Patient" />
</items>
</Menu>
</menus>
</MenuBar>
</children>
</AnchorPane>
此MainMenubar.fxml的控制器文件为MainMenubarController.java
public class MainMenuBarController {
@FXML
private MenuItem addPatiendMenuItem;
@FXML
private MenuItem findPatientMenuItem;
@FXML
public void closeApplication(){
System.exit(0);
}
@FXML
public void addPatient(ActionEvent event){
}
}
我花了很多时间去寻找,如何从对子控制器组件执行的操作中更改父控制器组件?
在MainMenubarController
中创建一个属性,该属性表示您正在更改的状态(“视图状态”)。要使这变得有意义,需要对应用程序有更多的了解,但您可以执行以下操作:
public class MainMenuBarController {
private final BooleanProperty addPatientRequested = new SimpleBooleanProperty();
public BooleanProperty addPatientRequestedProperty() {
return addPatientRequested ;
}
public final boolean isAddPatientRequested() {
return addPatientRequestedProperty().get();
}
public final boolean setAddPatientReqested(boolean requested) {
addPatientReqestedProperty().set(requested);
}
@FMXL
private void addPatient(ActionEvent event) {
setAddPatientRequested(true);
}
}
然后在“父”控制器中执行
public class RootLayoutController {
@FXML
private MainMenuBarController mainMenuBarController;
@FXML
private AnchorPane dashboard;
@FXML
private void initialize() {
// Initialize the person table with the two columns.
mainMenuBarController.addPatientRequestedProperty().addListener((obs, wasRequested, isNowRequested) -> {
if (isNowRequested) {
// code to execute...
}
});
}
}
根据应用程序逻辑,您可能需要一个不同的属性,例如在mainmenubarcontroller
define中
ObjectProperty<Node> display = new SimpleObjectProperty<>();
我需要你的帮助来解决这个问题,我想从不同的包中包含子fxml。如果child.fxml在同一位置,我可以将它们包含到parent.fxml中,但不知道如何将child.fxml添加到parent.fxml中,当两者都在不同的位置/包中时。 先谢谢你。
大家好,我是fxml的新手,所以请忽略我的愚蠢的问题,这里有几个东西,我尝试了两天,但没有成功 > 从表中删除空白,即表大小应达到可用行数(行数不同) 当用户单击表行(任何显示值)时,新的fxml文件将在定位窗格(显示tableview)中打开,分配给tableview,但我想在主视图中显示它(这里显示的是整个表和两个文本字段以及主堆栈后面的搜索按钮)主视图(其他只有标题和侧栏的fxml文件) 如
null 我是否可以从子控制器-b更改父FXML-A中标签的文本?
控制器类别:包装样品;
场景:我有一个名为L的父窗口,并在此窗口上有一个。我正在通过创建另一个名为的窗口来编辑这些行结果,并将行数据填充到这个FXML字段中,现在在从第二个窗口进行编辑后,如果保存,我需要用最新的数据更新父表。但是当我调试时,我的表列表用最新的数据更新,并且不在窗口中显示。那么如何从不同的控制器更新表视图呢? 并且在我的父类中initialize方法具有以下代码: @override public voi
我有两个组件:父组件,我想改变子组件的状态: 和子组件: 我需要从父组件更改子组件的打开状态,或者当单击父组件中的按钮时,从父组件调用子组件的toggleMenu()?