JavaFX-FXML标签不';不要更新它的值
我正在尝试从另一个控制器更新标签,但它不会在视觉上更新 以下控制器控件动态加载外部控制器JavaFX-FXML标签不';不要更新它的值,java,javafx,Java,Javafx,我正在尝试从另一个控制器更新标签,但它不会在视觉上更新 以下控制器控件动态加载外部控制器 private ClientShowController clientShowController; public void initialize(){ try { pane_clientDetail.getChildren().add(FXMLLoader.load(getClass().getResource("../resources/Client_show.fxml
private ClientShowController clientShowController;
public void initialize(){
try {
pane_clientDetail.getChildren().add(FXMLLoader.load(getClass().getResource("../resources/Client_show.fxml")));
FXMLLoader loader = new FXMLLoader(getClass().getResource("../resources/Client_show.fxml"));
loader.load();
clientShowController = (ClientShowController) loader.getController();
System.out.println(clientShowController);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void showPersonDetails(Person person) {
if (person != null) {
//Update
clientShowController.setId(Integer.toString(person.getId()));
}
}
第二控制器:
@FXML private Label lbl_id;
public void setId(String strId){
System.out.println(strId);
lbl_id.setText(strId);
System.out.println(lbl_id);
}
请注意:
- System.out在标签上正确显示id李>
- 第二个控制器绑定到嵌入在第一个控制器中的FXML文件。如代码所示,第二个FXML文件/控制器是动态加载的:
李>pane\u clientDetail.getChildren().add()
- 在第二个控制器中通过initialize方法设置id时,id将按预期显示在标签中: 公共无效初始化(){ 本条第12款; }
<Pane fx:id="pane_clientDetail"/>
第二点:
<GridPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.controllers.ClientShowController">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="144.0" minWidth="10.0" prefWidth="102.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="195.0" minWidth="10.0" prefWidth="195.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label text="given name" GridPane.rowIndex="1">
<GridPane.margin>
<Insets left="10.0" />
</GridPane.margin>
</Label>
<Label text="family name" GridPane.rowIndex="2">
<GridPane.margin>
<Insets left="10.0" />
</GridPane.margin>
</Label>
<Label text="gender" GridPane.rowIndex="3">
<GridPane.margin>
<Insets left="10.0" />
</GridPane.margin>
</Label>
<Label text="email" GridPane.rowIndex="4">
<GridPane.margin>
<Insets left="10.0" />
</GridPane.margin>
</Label>
<Label text="phone" GridPane.rowIndex="5">
<GridPane.margin>
<Insets left="10.0" />
</GridPane.margin>
</Label>
<Label text="id">
<GridPane.margin>
<Insets left="10.0" />
</GridPane.margin>
</Label>
<Label text="address" GridPane.rowIndex="6">
<GridPane.margin>
<Insets left="10.0" />
</GridPane.margin>
</Label>
<Label text="zip" GridPane.rowIndex="7">
<GridPane.margin>
<Insets left="10.0" />
</GridPane.margin>
</Label>
<Label fx:id="lbl_id" text="-" GridPane.columnIndex="1">
<GridPane.margin>
<Insets />
</GridPane.margin>
</Label>
<Label fx:id="lbl_given_name" text="-" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label fx:id="lbl_family_name" text="-" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Label fx:id="lbl_gender" text="-" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label fx:id="lbl_email" text="-" GridPane.columnIndex="1" GridPane.rowIndex="4" />
<Label fx:id="lbl_phone" text="-" GridPane.columnIndex="1" GridPane.rowIndex="5" />
<Label fx:id="lbl_address" text="-" GridPane.columnIndex="1" GridPane.rowIndex="6" />
<Label fx:id="lbl_zip" text="-" GridPane.columnIndex="1" GridPane.rowIndex="7" />
<Label text="city" GridPane.rowIndex="8">
<GridPane.margin>
<Insets left="10.0" />
</GridPane.margin>
</Label>
<Label fx:id="lbl_city" text="-" GridPane.columnIndex="1" GridPane.rowIndex="8" />
</children>
<VBox.margin>
<Insets top="10.0" />
</VBox.margin>
</GridPane>
您似乎有两个UI实例:
1. pane_clientDetail.getChildren().add(FXMLLoader.load(getClass().getResource("../resources/Client_show.fxml")));
2. FXMLLoader loader = new FXMLLoader(getClass().getResource("../resources/Client_show.fxml"));
首先加载一个视图并将其附加到窗格\u clientDetail
,这就是正在显示的视图。然后创建另一个并获取控制器。由于明显的原因,第二控制器不会更新第一视图
解决方案:
FXMLLoader loader = new FXMLLoader(getClass().getResource("../resources/Client_show.fxml"));
Parent view = loader.load();
pane_clientDetail.getChildren().add(view);
// rest of the code
您似乎有两个UI实例:
1. pane_clientDetail.getChildren().add(FXMLLoader.load(getClass().getResource("../resources/Client_show.fxml")));
2. FXMLLoader loader = new FXMLLoader(getClass().getResource("../resources/Client_show.fxml"));
首先加载一个视图并将其附加到窗格\u clientDetail
,这就是正在显示的视图。然后创建另一个并获取控制器。由于明显的原因,第二控制器不会更新第一视图
解决方案:
FXMLLoader loader = new FXMLLoader(getClass().getResource("../resources/Client_show.fxml"));
Parent view = loader.load();
pane_clientDetail.getChildren().add(view);
// rest of the code
您可以添加fxml的定义吗?您所说的嵌入式是什么意思?您是否也可以添加fxml的定义?你说的嵌入式是什么意思?