PhilippGer
Mitglied
Hi!
Ich soll für ein Uni-Projekt ein kleines Testprogramm nach Model-View-Controller-Architektur erstellen.
Ein Fenster mit einer Liste, ich kann in einem textfeld etwas eingeben, dass wird dann an die Liste angehängt. Beim Beenden des Programms soll sich die liste in eine Datei hinnein serialisieren und beim Starten soll sie aus dieser Datei heraus wieder geladen werden.
Soweit eigentlich kein Problem.
Das Reagieren auf Starten/Beenden des Programms woltle ich per WindowListener des View-Teils machen. Allerdings wirft er mir jedes mal eine, mir nicht erklärliche Exception, wenn ich das tun will.
Hier mal der, für diese Teile relevante, Quellcode:
View:
Controller:
Erstellt wird das Ganze durch:
Als Exception wirft er mir:
Ich habe absolut keine Idee, warum an der Stelle eine NullPointerException kommen soll. Ich sehe nicht, wo da etwas fehlerhaft sein sollte.
Seh ich den Wald vor lauter Bäumen nicht oder wieso?
Anm. das Hinzufügen des Listeners für den Button funktioniert einwandfrei!
Ich soll für ein Uni-Projekt ein kleines Testprogramm nach Model-View-Controller-Architektur erstellen.
Ein Fenster mit einer Liste, ich kann in einem textfeld etwas eingeben, dass wird dann an die Liste angehängt. Beim Beenden des Programms soll sich die liste in eine Datei hinnein serialisieren und beim Starten soll sie aus dieser Datei heraus wieder geladen werden.
Soweit eigentlich kein Problem.
Das Reagieren auf Starten/Beenden des Programms woltle ich per WindowListener des View-Teils machen. Allerdings wirft er mir jedes mal eine, mir nicht erklärliche Exception, wenn ich das tun will.
Hier mal der, für diese Teile relevante, Quellcode:
View:
Code:
public class View{
private JFrame frame;
private List list;
private Modell modell;
protected JTextField obstnameTf;
protected JTextField obstpreisTf;
private JButton addButton;
// Action Listener für den Hinzufügen-knopf
void addAddListener(ActionListener al){
this.addButton.addActionListener(al);
}
// Action Listener für das Schließen
void addWindowListener( WindowListener w){
// NullPointerException
this.frame.addWindowListener(w);
}
}
Controller:
Code:
public class Controller {
private Modell modell;
private View view;
private String filepath = "obstliste.ser";
public Controller( Modell modell, View view){
this.modell = modell;
this.view = view;
this.view.addAddListener( new addListener() );
this.view.addWindowListener( new wListener() );
}
// Hinzufügen-Befehl
class addListener implements ActionListener {
public void actionPerformed(ActionEvent e){
modell.add( view.nameTf.getText() + ": " + view.preisTf.getText() + "€" );
view.update(); // Im add-Befehl werdne nur bestimmte Textfelder im View abgefragt
}
}
// Schließ-Befehl
class wListener implements WindowListener {
@Override
public void windowClosing(WindowEvent arg0) {
modell.saveToFile(filepath);
}
@Override
public void windowOpened(WindowEvent arg0) {
modell.loadFromFile(filepath);
view.update();
}
/*Alle anderen durch WindowListener erforderlichen Methoden sind leer gelassen*/
}
}
Erstellt wird das Ganze durch:
Code:
Modell modell = new Modell();
View view = new View(modell);
Controller controller = new Controller( modell, view);
Als Exception wirft er mir:
Code:
java.lang.NullPointerException
at Aufgabe4.View.addWindowListener(View.java:85)
at Aufgabe4.Controller.<init>(Controller.java:18)
at Aufgabe4.Main.main(Main.java:12)
Ich habe absolut keine Idee, warum an der Stelle eine NullPointerException kommen soll. Ich sehe nicht, wo da etwas fehlerhaft sein sollte.
Seh ich den Wald vor lauter Bäumen nicht oder wieso?
Anm. das Hinzufügen des Listeners für den Button funktioniert einwandfrei!