我已經創建了一個tabPane。在每個選項卡,我已經包括()的FXML顯示實際會話的用戶,使用此代碼:如何從另一個控制器修改標籤(查找+更新)?
家庭tab.fxml有這樣一行:
<fx:include fx:id="topTab" source="../top-tab.fxml"/>
頂級tab.fxml:
<AnchorPane maxHeight="20.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml" fx:controller="wuendo.client.TopTabController">
<children>
<HBox id="hbox_top" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0">
<Label id="label_session" prefHeight="20.0" text="SESSION : " />
<Label fx:id="sessionLabel" prefHeight="20.0" text="" />
</HBox>
</children>
</AnchorPane>
TopTabController.java:
@FXML public Label sessionLabel;
HomeTabController.java:
@FXML private TopTabController topTabController;
@Override
public void initialize(URL url, ResourceBundle rb) {
URL location = getClass().getResource("../top-tab.fxml");
FXMLLoader fxmlLoader = new FXMLLoader(location);
AnchorPane root = null;
try {
root = (AnchorPane) fxmlLoader.load();
} catch (IOException ex) {
Logger.getLogger(HomeTabController.class.getName()).log(Level.SEVERE, null, ex);
}
topTabController = (TopTabController) fxmlLoader.getController();
Label txt = (Label) root.lookup("#sessionLabel");
txt.setText("blabla");
System.out.println("sessionLabel= " + topTabController.sessionLabel.getText());
}
當我執行此,控制檯打印「布拉布拉」,但標籤的程序(GUI)沒有被修改
我有什麼做的,看到的值更新?
謝謝大家
'@FXML private TopTabController topTabController;'您是如何將TopTabController與home-tab.fxml關聯的?發表它。或者在刪除@FXML後再次嘗試您的應用。 –
@UlukBiy,我在這篇文章中關注了Greg Brown的答案:https://forums.oracle.com/forums/thread.jspa?messageID=10412389,他解釋說topTabController會自動創建並填充(如果我理解正確!)。 我已經更新了代碼以更加明確。感謝您的關注! –