JavaFX textField getter 不起作用,在另一个类中返回值为 null

问题描述 投票:0回答:1

我有2节课 第一类是控制器

public class Controller {
    @FXML
    private TextField myText;

    public TextField getMyText() {
        return myText;
    }
}

还有二等舱

public class Print {
    private static Controller controller = new Controller();

    public void print() {
    System.out.println(controller.getMyText().getText());
    }
}

我在文本字段中输入一个值,代码抛出异常 引起原因:java.lang.NullPointerException:无法调用“javafx.scene.control.TextField.getText()”,因为“Controller.getMyText()”的返回值为null。

为什么?谢谢。

在 fxml 中

TextField fx:id="myText" /

如果设置

System.out.println(myText.getText());

在控制器类中一切正常。

java javafx fxml
1个回答
0
投票

您需要使用 FXMLLoader 加载控制器。
正如@Slaw提到的,你应该删除控制器的静态引用,如果你需要从打印外部访问控制器,你可以创建一个吸气剂。

public class Print {
  private Controller controller;

  public void loadFXML() {
    FXMLLoader loader = new FXMLLoader(getClass().getResource("path/to/FXMLFile.fxml"));
    controller = loader.<Controller>getController();
  }

  public void print() {
    System.out.println(controller.getMyText().getText());
  }
}

一开始调用一次loadFXML()函数,然后就可以调用print()函数了。

© www.soinside.com 2019 - 2024. All rights reserved.