Nullpointer Exception beim übertragen von Daten von Scene zu Scene

wolfin96

Mitglied
Hallo miteinander. Ich stehe gerade vor folgendem Problem: Ich habe ein Hauptfenster, diese hat verschiedene Funktionen, bei einer davon öffnet sich ein Popup Fenster indem man Daten eingeben kann. Diese Daten sollen mittels einer Methode die im HauptfensterController steht und im PopupfensterController aufgerufen wird zum Hauptfenster übertragen werden, wenn im Popupfenster auf einen Button geklickt wird. Im Hauptfenster soll mit der aufgerufenen Methode dann auch direkt mit den Daten ein Objekt erstellt werden. Wenn ich nun im Popupfenster in das Textfield etwas eingebe und auf den Button klicke erhalte ich eine Nullpointerexception die auf die Zeile im Controller verweist in der die Methode aus dem Hauptfenstercontroller steht. Kann mir da jemand weiterhelfen? Oder hat jemand einen anderen Ansatz das Problem zu lösen? Vielen Dank schon mal für eure Hilfe!

Hier der Code vom Hauptfenstercontroller:
Java:
    //Methode zum Übertragen der Daten und erstellen des Objekts
    public void qErstellen(String laenge) {
        Quadratisch quadratisch = new Quadratisch(Double.parseDouble(laenge));
        //hier wird das erstellte Objekt in einer ArrayList gespeichert
        haufen.add(quadratisch);
    }

    //Methode mit der das Popupfenster aufgerufen wird
    public void erstelleQStein(ActionEvent event) throws Exception{

        //Laden des FXML Dokuments, welches das nächste Fenster darstellt
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(getClass().getResource("Quadratisch.fxml"));
        Parent qParent = loader.load();
      
        QuadratischController controller = loader.getController();
      
        //Erstellen einer neuen Stage
        Stage stage = new Stage();
        stage.initModality(Modality.APPLICATION_MODAL);
      
        //aufrufen der Stage mit neuer Scene
        stage.setScene(new Scene(qParent));     
        stage.show(); 
  
    }

Und hier der Code vom Popupfenstercontroller:
Java:
    @FXML public TextField kantenlaengeT;
    private HauptfensterController hController;

    //wird beim Klicken auf den Button aufgerufen
    public void changeScreen(ActionEvent event) throws Exception {
      
        //aufrufen der Methode aus dem Hauptfenstercontroller
        hController.qErstellen(kantenlaengeT.getText());             
                            
    }
 
K

kneitzel

Gast
Wenn du die Instanzvariable nicht setzt, dann ist sie null.
Also noch ein Setter definieren und den dann aufrufen ehe du show aufrufst.
 

wolfin96

Mitglied
Wenn du die Instanzvariable nicht setzt, dann ist sie null.
Also noch ein Setter definieren und den dann aufrufen ehe du show aufrufst.
Du meinst einen Setter im HauptfensterController und den dann in der erstelleQStein Methode aufrufen? Ich verstehe nicht ganz wie ich dadurch an die Eingabe aus dem anderen Fenster herankomme? Danke schon mal für deine Antwort!
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Nein, da wo Du die Instanzvariable hast, da brauchst Du auch den Setter ...

Und im Hauptfenster öffnest Du ja das andere Fenster:

[CODE lang="java" highlight="8,9"] //Laden des FXML Dokuments, welches das nächste Fenster darstellt
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("Quadratisch.fxml"));
Parent qParent = loader.load();

QuadratischController controller = loader.getController();

// Hier könntest Du dann doch etwas machen wie
controller.setHauptfensterController(this);

//Erstellen einer neuen Stage
Stage stage = new Stage();
stage.initModality(Modality.APPLICATION_MODAL);

//aufrufen der Stage mit neuer Scene
stage.setScene(new Scene(qParent));
stage.show();
[/CODE]

Das wäre eine Möglichkeit. Generell sollte man da sich aber überlegen, wie man die Bindung zwischen den Klassen geringer halten kann. Statt da also in dem einen Contoller den anderen zu referenzieren könnte man gegen ein Interface entwickeln. Oder wenn es da nur um die Verarbeitung von Strings geht, dann kann man dem Controller evtl. einfach ein Consumer<String> geben und der würde dann gesetzt. Dann gibt es da keine Abhängigkeit zu dem ersten Controller.
Aber das kannst Du am Anfang erst einmal ignorieren, bis Du Zeit hattest, Objektorientiertes Design etwas zu vertiefen.
 

wolfin96

Mitglied
Entschuldige bitte die vielen, vermutlich offensichtlichen Nachfragen, aber mir erschließt sich nicht wie und wo ich den Setter reinschreiben soll. So wie du das hier geschrieben hast, verstehe ich es so, dass der Setter im HauptfensterController aufgerufen wird, aber da hat er doch noch keine Eingabe aus dem Popupfenster zum verarbeiten bekommen?
Ich habe unten mal einen Screenshot angehängt um mal die gewünschte Funktionalität darzustellen, vielleicht bin ich auch einfach nur zu blöd um es zu verstehen (was definitiv nicht auszuschließen ist... 😅) bin noch sehr neu in der Materie.
Nein, da wo Du die Instanzvariable hast, da brauchst Du auch den Setter ...

Und im Hauptfenster öffnest Du ja das andere Fenster:

[CODE lang="java" highlight="8,9"] //Laden des FXML Dokuments, welches das nächste Fenster darstellt
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("Quadratisch.fxml"));
Parent qParent = loader.load();

QuadratischController controller = loader.getController();

// Hier könntest Du dann doch etwas machen wie
controller.setHauptfensterController(this);

//Erstellen einer neuen Stage
Stage stage = new Stage();
stage.initModality(Modality.APPLICATION_MODAL);

//aufrufen der Stage mit neuer Scene
stage.setScene(new Scene(qParent));
stage.show();
[/CODE]

Das wäre eine Möglichkeit. Generell sollte man da sich aber überlegen, wie man die Bindung zwischen den Klassen geringer halten kann. Statt da also in dem einen Contoller den anderen zu referenzieren könnte man gegen ein Interface entwickeln. Oder wenn es da nur um die Verarbeitung von Strings geht, dann kann man dem Controller evtl. einfach ein Consumer<String> geben und der würde dann gesetzt. Dann gibt es da keine Abhängigkeit zu dem ersten Controller.
Aber das kannst Du am Anfang erst einmal ignorieren, bis Du Zeit hattest, Objektorientiertes Design etwas zu vertiefen.
 

Anhänge

  • Screenshot 2021-03-23 210804.jpg
    Screenshot 2021-03-23 210804.jpg
    168,8 KB · Aufrufe: 20
K

kneitzel

Gast
Referenzen sind wie Adressen, die auf ein Objekt verweisen.

Also wenn man sich das jetzt wie Häuser vorstellt, dann habe ich ein Haus, das nach einem bestimmten Bauplan gebaut ist. Davon kann es aber beliebig viele geben: 0, wenn danach noch kein Haus gebaut wurde aber auch hunderte, so entsprechend viele Häuser davon gebaut wurden.

Was Du da jetzt hast ist ein leerer Zettel, auf dem eine Adresse zu einem Haus vom Bauplan HauptfensterController stehen könnte. So lange, wie da aber keine Adresse steht, wird jeder Versuch, da etwas in dem Haus zu machen, mit einem "Du Depp - mit einem leeren Zettel kann ich das Haus nicht finden" quittiert. (NullPointerException).

Also hinterlegst Du die Adresse. Nichts anderes ist dieser Setter. Du gibt dem PopupController die Adresse (Referenz im Java Sprachgebrauch), denn dann kann der PopupController da etwas mit machen.


Oder wie es damals bei Smalltalk gesagt wurde: Die Objekte senden sich Nachrichten. Der Hauptcontroller schickt dem PopupController eine Nachricht mit seiner Adresse. Denn dann kann der PopupController auch Nachrichten an den HauptController senden ...

Also egal, wie Du Dir das auch immer vorstellst: Das ist das, was dahinter steckt und was Du verstehen musst.
 

wolfin96

Mitglied
Referenzen sind wie Adressen, die auf ein Objekt verweisen.

Also wenn man sich das jetzt wie Häuser vorstellt, dann habe ich ein Haus, das nach einem bestimmten Bauplan gebaut ist. Davon kann es aber beliebig viele geben: 0, wenn danach noch kein Haus gebaut wurde aber auch hunderte, so entsprechend viele Häuser davon gebaut wurden.

Was Du da jetzt hast ist ein leerer Zettel, auf dem eine Adresse zu einem Haus vom Bauplan HauptfensterController stehen könnte. So lange, wie da aber keine Adresse steht, wird jeder Versuch, da etwas in dem Haus zu machen, mit einem "Du Depp - mit einem leeren Zettel kann ich das Haus nicht finden" quittiert. (NullPointerException).

Also hinterlegst Du die Adresse. Nichts anderes ist dieser Setter. Du gibt dem PopupController die Adresse (Referenz im Java Sprachgebrauch), denn dann kann der PopupController da etwas mit machen.


Oder wie es damals bei Smalltalk gesagt wurde: Die Objekte senden sich Nachrichten. Der Hauptcontroller schickt dem PopupController eine Nachricht mit seiner Adresse. Denn dann kann der PopupController auch Nachrichten an den HauptController senden ...

Also egal, wie Du Dir das auch immer vorstellst: Das ist das, was dahinter steckt und was Du verstehen musst.
Jetzt hat es bei mir Klick gemacht und es läuft! Vielen Dank für deine Geduld und deine Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S NullPointer Exception beim Laden von Bildern AWT, Swing, JavaFX & SWT 11
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
X Auf Fensterklasse zugreifen (Nullpointer Exception) AWT, Swing, JavaFX & SWT 2
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
V Swing Nullpointer Exception bei JFormattedTextField AWT, Swing, JavaFX & SWT 4
Daniel_L JTable, (Auto-)RowSorter und NullPointer-Exception AWT, Swing, JavaFX & SWT 6
N JList - Nullpointer Exception AWT, Swing, JavaFX & SWT 4
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
G JavaFX ImageView (Nullpointer) AWT, Swing, JavaFX & SWT 1
I JComboBox gibt bei ausgewählten ITem NullPointer an... AWT, Swing, JavaFX & SWT 3
B JavaFX Sporadisch auftretende Nullpointer AbstractTimer AWT, Swing, JavaFX & SWT 4
S Swing Setzen von TableModel liefert NullPointer AWT, Swing, JavaFX & SWT 6
Grejak NullPointer AWT, Swing, JavaFX & SWT 8
I NullPointer bei getSelectedItem() in itemStateChanged() AWT, Swing, JavaFX & SWT 4
M JComboBox setSelectedItem() und getSelectedItem() NullPointer AWT, Swing, JavaFX & SWT 2
M Swing JTextArea größe anpassen & setBackground liefer Nullpointer AWT, Swing, JavaFX & SWT 4
1 NullPointer und JList AWT, Swing, JavaFX & SWT 4
N einfacher ActionListener und NullPointer AWT, Swing, JavaFX & SWT 2
V Nullpointer in der GUI? EDT? AWT, Swing, JavaFX & SWT 2
H JTree Nullpointer Problem AWT, Swing, JavaFX & SWT 4
dzim NullPointer bei refresh() einer JFace TableViewer AWT, Swing, JavaFX & SWT 2
spacegaier NullPointer beim Auslesen eines JTextFields AWT, Swing, JavaFX & SWT 7
G Wo kommen die Nullpointer her? AWT, Swing, JavaFX & SWT 9
H Exception: java.lang.ClassCastException AWT, Swing, JavaFX & SWT 2
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
T Exception in thread "main" java.lang.NoClassDefFoundError AWT, Swing, JavaFX & SWT 4
G Exception javafx Thread -> caused by removing children while in EventHandler AWT, Swing, JavaFX & SWT 28
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
Z JavaFX Exception in Application start method AWT, Swing, JavaFX & SWT 2
J "Exception in thread "AWT-EventQueue-0"" Fehler AWT, Swing, JavaFX & SWT 3
R AWT no such child Exception AWT, Swing, JavaFX & SWT 7
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
A Swing Exception in thread "AWT-EventQueue-0" AWT, Swing, JavaFX & SWT 1
W JavaFX Warum kriege ich eine Exception? AWT, Swing, JavaFX & SWT 23
S JavaFX Exception in thread "JavaFX Application Thread" AWT, Swing, JavaFX & SWT 3
L JavaFX JavaFX stürtzt durch einen Server#connect Exception AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Exception Message von Model Class via Controller in View darstellen AWT, Swing, JavaFX & SWT 39
L Java FX Exception beim start AWT, Swing, JavaFX & SWT 2
J ObservableList wirft exception beim zweiten füllen. AWT, Swing, JavaFX & SWT 4
S java.fxml.load.exception und keine automatische Aktualliseriung der Mainausgabe AWT, Swing, JavaFX & SWT 5
VfL_Freak AWT Exception in der Eventqueue AWT, Swing, JavaFX & SWT 8
A Swing Null Pointer Exception obwohl Objekt initialisiert AWT, Swing, JavaFX & SWT 21
X Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1 AWT, Swing, JavaFX & SWT 6
H JavaFX Ein View vorschalten Exception AWT, Swing, JavaFX & SWT 7
Q "AWT-EventQueue-0" Exception Problem AWT, Swing, JavaFX & SWT 4
M 3D-Grafik Mac Java 3D in Eclipse Exception AWT, Swing, JavaFX & SWT 0
L exception in thread awt-eventqueue-0 java.lang.nullpointerexception AWT, Swing, JavaFX & SWT 2
I Opencv Imgproc.floodfill exception AWT, Swing, JavaFX & SWT 1
S Swing Exception in thread "AWT-EventQueue-0" bei Jlabel AWT, Swing, JavaFX & SWT 4
T Gui Exception AWT, Swing, JavaFX & SWT 2
M Threads - nicht erklärbare Exception AWT, Swing, JavaFX & SWT 6
J Einträge aus Table löschen ohne Exception AWT, Swing, JavaFX & SWT 6
C Event Handling Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException AWT, Swing, JavaFX & SWT 43
N Swing Exception: Comparison method violates its general contract! AWT, Swing, JavaFX & SWT 13
S Exception bei BufferStrategy AWT, Swing, JavaFX & SWT 8
H Swing Exception's und MVC AWT, Swing, JavaFX & SWT 35
R Swing Mit Swing eine throws Exception Methode öffnen AWT, Swing, JavaFX & SWT 3
M Exception in thread "Thread-3" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 18
K AWT DataBuffer in DataBufferInt Exception AWT, Swing, JavaFX & SWT 2
lumo SWT Exception in thread "main" org.eclipse.swt.SWTError: No more handles AWT, Swing, JavaFX & SWT 3
S Swing AWT-Exception bei JTable mit JComboBox beim Löschen der letzten Zeile AWT, Swing, JavaFX & SWT 3
O Immer Exception in AWT-EventQueue-0 AWT, Swing, JavaFX & SWT 5
F Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: null AWT, Swing, JavaFX & SWT 5
F Swing Seltsame Exception AWT, Swing, JavaFX & SWT 5
R Swing Files auflisten (JButton, JList, Exception) AWT, Swing, JavaFX & SWT 4
V LookAndFeel Nullpoint Exception AWT, Swing, JavaFX & SWT 2
Airwolf89 Swing Exception beim Füllen einer Tabelle AWT, Swing, JavaFX & SWT 10
hdi SWT Zwei mal Shell öffnen = Exception AWT, Swing, JavaFX & SWT 6
N Exception Behandlung mit setDefaultUncaughtExceptionHandler, insbesondere im EventDispatcher Thread AWT, Swing, JavaFX & SWT 4
O Probleme beim Zeichnen und AWT-Event-Queue-0 Exception AWT, Swing, JavaFX & SWT 5
O Exception bei repaint AWT, Swing, JavaFX & SWT 3
D Bild zeichnen lassen aus array, null pointer Exception AWT, Swing, JavaFX & SWT 2
B JTable ValueChanged verursacht Exception AWT, Swing, JavaFX & SWT 3
S Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 7
M Exception in eine JTextArea anzeigen AWT, Swing, JavaFX & SWT 7
T Exception: Adding a window to a container AWT, Swing, JavaFX & SWT 14
G Kann mir jemand diese Exception erklaeren? AWT, Swing, JavaFX & SWT 8
T AWT Exception AWT, Swing, JavaFX & SWT 5
A Exception beim LineWrapping AWT, Swing, JavaFX & SWT 16
P Für mich unverständliche Exception AWT, Swing, JavaFX & SWT 3
Lony AbstractTableModel Exception in thread "AWT-EventQueue- AWT, Swing, JavaFX & SWT 3
T Warum schmeißt das eine Exception? AWT, Swing, JavaFX & SWT 6
I EventDispatchThread Exception AWT, Swing, JavaFX & SWT 5
M Problem: "ArrayIndexOutOfBounds Exception" AWT, Swing, JavaFX & SWT 11
C Out of Bounds Exception, Array of JTextField AWT, Swing, JavaFX & SWT 6
B JTable Vector Exception bei eigenem CellEditor AWT, Swing, JavaFX & SWT 3
D Seltsame AWT-Exception AWT, Swing, JavaFX & SWT 2
M Button und Exception mit NetBeans AWT, Swing, JavaFX & SWT 3
P paint null pointer exception AWT, Swing, JavaFX & SWT 3
M Exception Meldung aus Thread an jTextField1 übergeben AWT, Swing, JavaFX & SWT 6
A Null pointer exception beim Neuzeichnen AWT, Swing, JavaFX & SWT 4
R DataVector bei TableModel - Class Cast Exception AWT, Swing, JavaFX & SWT 9
G Drag & Drop bzw. Data Transfer - Exception nach Drag AWT, Swing, JavaFX & SWT 1
K Exception mit "Unknown Source" AWT, Swing, JavaFX & SWT 5
Z jar-File mit SWT - Exception AWT, Swing, JavaFX & SWT 4
F Habe Problem mit dem Abfangen einer Exception AWT, Swing, JavaFX & SWT 10
V Null Pointer Exception bei JTextField setText AWT, Swing, JavaFX & SWT 25

Ähnliche Java Themen

Neue Themen


Oben