Problem z JavaFX - jak dodać tekst do TextArea z innej klasy?

0

Cześć.
Dopiero zaczynam z JavaFX i mam problem z którym nie mogę sobie poradzić.
Mianowicie wyskakuje mi błąd "java.lang.NullPointerException" w miejscu gdzie wykonuje analyzeTextArea.appendText(text);
System.out.println(text); normalnie wyświetla się w konsoli.

Co tutaj robie źle?

Controller:

public class NGMainController {

    @FXML
    private Pane NGMainWindowPane;

    @FXML
    public TextArea analyzeTextArea;

    @FXML
    void initialize() {
    }
}

Main:

public class NGMain extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("NGMain.fxml"));
        primaryStage.setTitle("Analyzer");
        primaryStage.setScene(new Scene(root, 800, 600));
        primaryStage.setResizable(false);
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }

Klasa z której próbuje dodać tekst do TextArea:

public class ParseNG extends NGMainController{

    private String webSource;
    private Document matchDocument;
...
...
...
private void checkTest(){
        String text = "Jakiś tam tekst!";

        analyzeTextArea.appendText(text);

        System.out.println(text);
    }

Pozdrawiam.

0

Masz źle initialize, powinno być:

   @Override
    public void initialize(URL location, ResourceBundle resources)
0

Wygląda na błąd w pliku fxml bo z jakiegoś powodu Ci tego pola nie wstrzykuje.
Sprawdź czy masz ustawioną nazwę kontrolera, wszystkie id itp,

0
Black007 napisał(a):

Masz źle initialize, powinno być:

   @Override
    public void initialize(URL location, ResourceBundle resources)

Niestety nic to nie dało.

dymul napisał(a):

Wygląda na błąd w pliku fxml bo z jakiegoś powodu Ci tego pola nie wstrzykuje.
Sprawdź czy masz ustawioną nazwę kontrolera, wszystkie id itp,

W pliku wydaje się być wszystko w porządku.

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>

<Pane fx:id="NGMainWindowPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/9" xmlns:fx="http://javafx.com/fxml/1" fx:controller="pl.kjdev.NowGoal.NGMainController">
   <children>
      <Button fx:id="analyzeButton" layoutX="14.0" layoutY="14.0" mnemonicParsing="false" onAction="#analyzeButtonOnClick" prefHeight="40.0" prefWidth="608.0" text="Analyze Live Match..">
         <font>
            <Font size="18.0" />
         </font>
      </Button>
      <TextArea fx:id="analyzeTextArea" layoutX="14.0" layoutY="68.0" prefHeight="520.0" prefWidth="770.0" />
      <Button fx:id="analyzerButtonClear" layoutX="630.0" layoutY="14.0" mnemonicParsing="false" onAction="#analyzeButtonClearOnClick" prefHeight="40.0" prefWidth="150.0" text="Clear">
         <font>
            <Font size="18.0" />
         </font></Button>
   </children>
</Pane>

Bezpośrednio z NGMainController mogę wszystko z kontrolkami robić, z innej klasy nie mogę nic.. :(

0

A skąd bierzesz w innej klasie referencję do instancji kontrolera? Poprzez loader.getController() czy robisz new NGMainController() ?
wrzuć cały kod do jakiegoś repozytorium bo inaczej to wróżenie z fusów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1