Ich schreibe ein Übungsprogramm nach dem MVC-Prinzip. In diesem Programm habe ich unter anderem ein Texteingabefeld und einen Button. Beim Klick auf den Button soll der Wert aus dem Eingabefeld geholt werden und dann wird damit irgendetwas gemacht.
Nach dem MVC-Prinzip habe ich Button und Textfeld in die View-Klasse gepackt, den ActionListener für den Button in die Control-Klasse. Das Problem entsteht, da die View eine Referenz auf die Control braucht, und die Control braucht eine Referenz auf die View. Ein paar Codeauszüge zur Verdeutlichung:
Ich bekomme in diesem Fall eine NullPointerException. Einfach das Control-Objekt vor dem View-Objekt anzulegen ist auch keine Lösung, da die Control-Klasse natürlich auch auf die View-Klasse zugreift (Daten aus dem Eingabefeld holen usw.). Also was muss ich da tun, wie macht man es richtig?
Nach dem MVC-Prinzip habe ich Button und Textfeld in die View-Klasse gepackt, den ActionListener für den Button in die Control-Klasse. Das Problem entsteht, da die View eine Referenz auf die Control braucht, und die Control braucht eine Referenz auf die View. Ein paar Codeauszüge zur Verdeutlichung:
Code:
// im Konstruktor der Hauptklasse
mData = new Model();
mGfx = new View(mCtrl);
mCtrl = new Control(mGfx);
// ...
// im Konstruktor der View-Klasse
mBU.addActionListener(mCtrl.mBU); // mBU ist JButton
// ...
Ich bekomme in diesem Fall eine NullPointerException. Einfach das Control-Objekt vor dem View-Objekt anzulegen ist auch keine Lösung, da die Control-Klasse natürlich auch auf die View-Klasse zugreift (Daten aus dem Eingabefeld holen usw.). Also was muss ich da tun, wie macht man es richtig?