第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

訪問不同 fxml 文件中的 ui 元素

訪問不同 fxml 文件中的 ui 元素

慕絲7291255 2022-06-23 10:25:02
我有一個帶有 main.fxml 的 FXML 應(yīng)用程序,其中包括另外兩個 fxml 文件。這些 fxml 文件中的每一個都有自己的控制器類。我的問題是,如何從特定控制器訪問對象,盡管這些對象是在另一個 fxml 文件中定義的。以下代碼只是一個最小的示例。我認(rèn)為將 ui 元素拆分為不同的 fxml 文件是個好主意,因?yàn)樗鼈冊絹碓酱?。我的主?fxml:<VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="MainController">   <fx:include fx:id="top" source="top.fxml"/>   <fx:include fx:id="bottom" source="bottom.fxml"/></VBox>頂部.fxml:<VBox fx:id="vbox" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="ControllerTop">  <children>    <Button fx:id="topbtn" onAction="#printOutput" text="OK" />  </children></VBox>底部.fxml<VBox fx:id="vbox" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="ControllerBottom">  <children>    <Button fx:id="bottombtn" onAction="#printOutput" text="OK" />  </children></VBox>對于 top.fxml,我創(chuàng)建了這個控制器類:public class ControllerTop {    @FXML public Button topbtn;    @FXML public Button bottombtn;    @FXML    public void printOutput() {        System.out.println("Hello from top button");        topbtn.setDisable(true); //OK!        bottombtn.setDisable(false); //Failed    }}當(dāng)然bottombtn是在bottom.fxml中定義的,并且有自己的控制器。問題是,這個ControllerTop 的printOut() 的bottombtn 會導(dǎo)致NullPointerException。所以我需要幫助,以一種漂亮而聰明的方式訪問對象。
查看完整描述

1 回答

?
開滿天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個贊

在主控制器中:


public class MainController {

/**

 * var name has to be topController

 */

public TopController topController;

/**

 * var name has to be bottomController

 */

public BottomController bottomController;


public void initialize(){

    Button topbtn=topController.topbtn;

    Button bottombtn=bottomController.bottombtn;

    topbtn.setOnAction(new EventHandler<ActionEvent>() {

        @Override

        public void handle(ActionEvent event) {

            System.out.println("Hello from top button");

            topbtn.setDisable(true); //OK!

            bottombtn.setDisable(false); //Failed

        }

    });


}

}

底部.fxml:


    <VBox fx:id="vbox" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="BottomController">

  <children>

    <Button fx:id="bottombtn" text="OK" />

  </children>

</VBox>

頂部.fxml:


 <VBox fx:id="vbox" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="TopController">

  <children>

    <Button fx:id="topbtn" text="OK" />

  </children>

</VBox>

并在 TopController 和 BottomController 類中設(shè)置 @FXML public Button **btnName**;


底部控制器:


public class BottomController {    

    public Button bottombtn;

}

頂級控制器:


public class TopController {

    public Button topbtn;

}

另一個 用于設(shè)置topController值initialize的選項(xiàng)MainControllerbottombtn


查看完整回答
反對 回復(fù) 2022-06-23
  • 1 回答
  • 0 關(guān)注
  • 92 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號