亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

多個 FXML 文件,每個文件都有控制器 - 附加后 TextArea 無法正確顯示文本

多個 FXML 文件,每個文件都有控制器 - 附加后 TextArea 無法正確顯示文本

躍然一笑 2022-07-06 17:24:48
我想將我的 FXML 分成更小的文件,每個文件都有自己的控制器。在 main 中,我為每個控制器創建實例并訪問textAreaSample并嘗試附加文本。我沒有看到文字正在改變。為什么?Alert正在顯示來自此的文本TextArea:alert.setContentText(textAreaSample.getText());我不知道如何設置所有 fxml 文件和控制器。我應該如何設置這一切?這是我的主要“sample.fxml”文件:<GridPane fx:controller="sample.ControllerSample"      xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">    <fx:include fx:id="sending" source="Sending.fxml" GridPane.columnIndex="0" GridPane.rowIndex="0"/>    <TextArea fx:id="textAreaSample" prefWidth="200" prefHeight="200"          GridPane.columnIndex="1" GridPane.rowIndex="0" text="Sample">    </TextArea></GridPane>及其控制器:public class ControllerSample {    @FXML    private TextArea textAreaSample;    public ControllerSample() {}    public TextArea getTextAreaSample() {        return textAreaSample;    }    public void setTextAreaSample(TextArea textAreaSample) {        this.textAreaSample = textAreaSample;    }}現在我有Sending.fxml文件:<GridPane fx:controller="sample.ControllerSending"          xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">        <fx:include fx:id="sendingPhotos" source="SendingPhotos.fxml" GridPane.columnIndex="0" GridPane.rowIndex="0"/></GridPane>及其控制器:public class ControllerSending {    public ControllerSending() {}}這是SendingPhotos.fxml代碼:<TextArea xmlns="http://javafx.com/javafx"      xmlns:fx="http://javafx.com/fxml"      fx:controller="sample.ControllerSendingPhotos" fx:id="textAreaSendingPhotos" prefWidth="200" prefHeight="200"      text="Photos"/>和控制器:public class ControllerSendingPhotos {    @FXML    private TextArea textAreaSendingPhotos;    public ControllerSendingPhotos() {}    public TextArea getTextAreaSendingPhotos() {        return textAreaSendingPhotos;    }    public void setTextAreaSendingPhotos(TextArea textAreaSendingPhotos) {        this.textAreaSendingPhotos = textAreaSendingPhotos;    }}
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

要訪問textArea嵌套的 fxml,您必須更改控制器:


public class ControllerSample {

    @FXML

    private TextArea textAreaSample;


    @FXML

    private ControllerSending sendingController;


    public ControllerSample() {

    }


    public TextArea getTextAreaSample() {

        return textAreaSample;

    }


    public void setTextAreaSample(TextArea textAreaSample) {

        this.textAreaSample = textAreaSample;

    }


    protected ControllerSending getSendingController() {

        return sendingController;

    }

}


public class ControllerSending {

    @FXML

    private ControllerSendingPhotos sendingPhotosController;


    public ControllerSending() {

    }


    protected ControllerSendingPhotos getSendingPhotosController() {

        return sendingPhotosController;

    }

}


public class Main extends Application {


    @Override

    public void start(Stage primaryStage) throws Exception {


        FXMLLoader loaderSample = new FXMLLoader(getClass().getResource("sample.fxml"));


        Parent root = loaderSample.load();


        ControllerSample controllerSample = (ControllerSample) loaderSample.getController();


        TextArea textAreaSample = controllerSample.getTextAreaSample();

        textAreaSample.setText("\ndebug textAreaSample\n");


        TextArea textAreaSendingPhotos = controllerSample.getSendingController().getSendingPhotosController()

            .getTextAreaSendingPhotos();

        textAreaSendingPhotos.setText("test test test");


        primaryStage.setTitle("Hello World");

        primaryStage.setScene(new Scene(root, 800, 400));

        primaryStage.show();


    }


    public static void main(String[] args) {

        launch(args);

    }

}



查看完整回答
反對 回復 2022-07-06
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號