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

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

如何從第二個控制器類獲取主控制器類中 textArea 中的選定文本?

如何從第二個控制器類獲取主控制器類中 textArea 中的選定文本?

慕萊塢森 2023-05-17 16:51:41
我正在嘗試從我的 FXMLDocumentController.java 中的 textArea 獲取選定的文本,并將其傳遞給第二個控制器類 HeadingsController.java。我在 Netbeans 中運行該應用程序,它可以正常啟動和加載。單擊帶有 fx:id="h1Link" 的超鏈接時出現 nullPointerException。空指針異常在 HeadingsController.java 的第 27 行表示它是String selectedText = fxmlDocC.getSelectedTextfromTextArea();FXMLDocumentController.java 是我試圖引用的 textArea 所在的位置...package textareatest1;import javafx.fxml.FXML;import javafx.scene.control.TextArea;public class FXMLDocumentController {    @FXML public TextArea textArea;    String selectedText = new String();    @FXML private HeadingsController headingsController = new HeadingsController();    public String getSelectedTextfromTextArea(){        selectedText =  textArea.getSelectedText();        return selectedText;    }    public void replaceSelectedText(String string){        textArea.replaceSelection(string);    }    @FXML public void initialize() {        headingsController.init(this);        textArea.setWrapText(true);    }   }這是上述控制器的 FXML 文件...<?xml version="1.0" encoding="UTF-8"?><?import java.lang.*?><?import java.util.*?><?import javafx.scene.*?><?import javafx.scene.control.*?><?import javafx.scene.layout.*?><BorderPane fx:id="borderPaneRoot" prefHeight="600.0" prefWidth="1000.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="textareatest1.FXMLDocumentController" >    <top>    </top>    <center>        <TextArea fx:id="textArea" />    </center>    <left>        <GridPane id="gridpaneLeft" fx:id="gridpaneLeft" hgap="10.0" prefHeight="200.0" prefWidth="320.0" vgap="10.0" >            <Accordion fx:id="leftAccordion" prefHeight="250.0" prefWidth="680.0">                <panes>
查看完整描述

1 回答

?
qq_花開花謝_0

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

這個問題不能通過創建實例來解決FXMLDocumentController,而是通過確保將實例傳遞給的控制器是與包含的 fxml 一起使用的控制器來解決;您創建的不是new HeadingsController()這個實例。


取而代之的是,FXMLLoader如果您附加到元素的,則將包含元素的控制器注入到具有您獲得的名稱的Controller字段fx:id中<fx:include>:


public class FXMLDocumentController {


    @FXML public TextArea textArea;

    String selectedText = ""; // why is this field necessary???


    // controller for FXMLHeadings.fxml is automatically injected here

    @FXML private HeadingsController fxmlheadingsController;


    public String getSelectedTextfromTextArea(){

        selectedText =  textArea.getSelectedText();

        return selectedText;

    }


    public void replaceSelectedText(String string){

        textArea.replaceSelection(string);

    }


    @FXML public void initialize() {

        fxmlheadingsController.init(this);

        textArea.setWrapText(true);

    }   


}


查看完整回答
反對 回復 2023-05-17
  • 1 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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