Hi,
ich habe mich bis jetzt eigentlich noch nie wirklich mit MVC beschäftigt, aber der Anspruch wächst und man möchte ja schließlich auch sauberen/strukturierten Code schreiben. Jedenfalls habe ich mir jetzt schon einige MVC-Beispiele hier im Forum angeschaut, auch nachvollziehen können, aber wenn es dann um die eigene Umsetzung ging wie ein Ochs vorm Berg gestanden Also scheinbar nachvollzogen, aber schlussendlich wohl doch nicht ganz verstanden...
Daher bitte ich um eine kleine Hilfestellung zu folgendem Szenario. Ich hoffe, dieses dann auch auf meine anderen Bereiche übertragen zu können...
Folgendes Szenario:
Ich habe ein JPanel mit nem JTree in einer JScrollPane. Unter der Pane ein JTextField zur Anzeige des aktuellen Knotennamens und darunter drei Buttons zum "Hinzufügen", "Umbenennen" und "Löschen".
Der Baum soll und wird aus einer Datenbank gefüllt. Dafür habe ich dann u.a. die folgenden Klassen:
- MyTreeNode (abgeleitet von DefaultMutableTreeNode), erweitert durch NodeID und NodeName und entsprechenden Gettern/Settern
- MyJTreeModel (abgeleitet von DefaultTreeModel) mit Methoden zum rekursiven Knoteneinfügen aus DB
- MyJTree mit update-Methode, wo ich den Wurzelknoten ermittel und das Model (s.o.) setze, wobei ich den Wurzelknoten übergebe...
Außerdem habe ich MyJTree um einen TreeSelectionListener erweitert, wo immer der aktuell gewählte Knoten ermittelt und gesetzt wird.
So weit so gut?
Jetzt stellen sich mir natürlich die Fragen gemäß MVC...
1.) Wo füge ich jetzt zB. die Methoden renameCurrentNode(String pName), deleteCurrentNode(), addNode(pName) ein und von wo rufe ich sie auf?
Aktuell ist es so, dass sie sich in der Klasse MyJTree befinden. Die jeweiligen Methoden (s.o.) rufe ich im Panel in den den Buttons hinzugefügten ActionListenern auf a la tree.renameCurrentNode(tfCurrentNodeName.getText());
2.) Von wo setze ich den aktuellen Knotennamen auf das Textfeld? Aktuell ist es so, dass ich dieses auch in einem Listener im Panel mache bei entsprechendem Ereignis... genauso mit Aktivieren und Deaktivieren der Buttons, so dass bei leerem Namenstextfeld der Hinzufüge-Button z.B. deaktiviert ist.
Man könnte natürlich all diese Komponenten der MyJTree übergeben und in derem Listener diese Vorgänge ausführen, aber ich denke, dass das noch weniger dem MVC entspricht, richtig?
Ich würde mich sehr über Feedback zu meinen Punkten und vielleicht noch genaueren Fragen freuen!
Code würde ich natürlich auch posten, falls das nützlich ist, aber ich denke, dass das eher ein Aufbau-/Strukturproblem ist, was ich im Übrigen generell habe... Auch hinsichtlich dazu, würde ich Vorschläge, Anregungen etc. begrüßen
Danke schon mal im Voraus
ich habe mich bis jetzt eigentlich noch nie wirklich mit MVC beschäftigt, aber der Anspruch wächst und man möchte ja schließlich auch sauberen/strukturierten Code schreiben. Jedenfalls habe ich mir jetzt schon einige MVC-Beispiele hier im Forum angeschaut, auch nachvollziehen können, aber wenn es dann um die eigene Umsetzung ging wie ein Ochs vorm Berg gestanden Also scheinbar nachvollzogen, aber schlussendlich wohl doch nicht ganz verstanden...
Daher bitte ich um eine kleine Hilfestellung zu folgendem Szenario. Ich hoffe, dieses dann auch auf meine anderen Bereiche übertragen zu können...
Folgendes Szenario:
Ich habe ein JPanel mit nem JTree in einer JScrollPane. Unter der Pane ein JTextField zur Anzeige des aktuellen Knotennamens und darunter drei Buttons zum "Hinzufügen", "Umbenennen" und "Löschen".
Der Baum soll und wird aus einer Datenbank gefüllt. Dafür habe ich dann u.a. die folgenden Klassen:
- MyTreeNode (abgeleitet von DefaultMutableTreeNode), erweitert durch NodeID und NodeName und entsprechenden Gettern/Settern
- MyJTreeModel (abgeleitet von DefaultTreeModel) mit Methoden zum rekursiven Knoteneinfügen aus DB
- MyJTree mit update-Methode, wo ich den Wurzelknoten ermittel und das Model (s.o.) setze, wobei ich den Wurzelknoten übergebe...
Außerdem habe ich MyJTree um einen TreeSelectionListener erweitert, wo immer der aktuell gewählte Knoten ermittelt und gesetzt wird.
So weit so gut?
Jetzt stellen sich mir natürlich die Fragen gemäß MVC...
1.) Wo füge ich jetzt zB. die Methoden renameCurrentNode(String pName), deleteCurrentNode(), addNode(pName) ein und von wo rufe ich sie auf?
Aktuell ist es so, dass sie sich in der Klasse MyJTree befinden. Die jeweiligen Methoden (s.o.) rufe ich im Panel in den den Buttons hinzugefügten ActionListenern auf a la tree.renameCurrentNode(tfCurrentNodeName.getText());
2.) Von wo setze ich den aktuellen Knotennamen auf das Textfeld? Aktuell ist es so, dass ich dieses auch in einem Listener im Panel mache bei entsprechendem Ereignis... genauso mit Aktivieren und Deaktivieren der Buttons, so dass bei leerem Namenstextfeld der Hinzufüge-Button z.B. deaktiviert ist.
Man könnte natürlich all diese Komponenten der MyJTree übergeben und in derem Listener diese Vorgänge ausführen, aber ich denke, dass das noch weniger dem MVC entspricht, richtig?
Ich würde mich sehr über Feedback zu meinen Punkten und vielleicht noch genaueren Fragen freuen!
Code würde ich natürlich auch posten, falls das nützlich ist, aber ich denke, dass das eher ein Aufbau-/Strukturproblem ist, was ich im Übrigen generell habe... Auch hinsichtlich dazu, würde ich Vorschläge, Anregungen etc. begrüßen
Danke schon mal im Voraus