MVC richtig umgesetzt?

propra

Aktives Mitglied
Hallo zusammen,

zu beginn meines Projektes habe ich mich in das Thema MVC eingelesen und versucht das ganze umzusetzen.
Dabei habe ich ein Model, eine View und einen Controller auf "Ebene" der GUI implementiert. Also Klassen wie GUI_Model, GUI_View und GUI_Controller.
In der GUI_View wird dann ein JFrame erzeugt, dem dann einige Komponenten hinzugefügt werden. Unter anderem erzeuge ich eine Zeichenfläche, die von JPanel erbt.
Jetzt hatte ich mir überlegt, diese Zeichenfläche ebenfalls in 3 Teile zu zerlegen. ZeichenflächeModel, ZeichenflächeView und ZeichenflächeController. Das funktionierte soweit auch ganz gut und ist sehr übersichtlich, da ich nun für die GUI die ActionListener für die Menueinträge im GUI_Controller behandle und den MouseListener für die Zeichenfläche im ZeichenflächenController.
Nun wollte ich gerne eine Statusleiste einfügen und sie auch mit MVC strukturieren. Also habe ich Klassen wie StatusleiteModel, StatusleisteView und StatusleisteController erzeugt und alles implementiert, damit unterschiedliche Texte in der Statusleiste angezeigt werden können.
Mein Problem liegt nun darin, dass sich der Status (Zeichenmodus) ändert, wenn ein entsprechender Menupunkt ausgewählt wurde. Das bedeutet, dass mein GUI_Controller den StatusleistController anweisen müsste, etwas zu tun.
Was ich nun nicht verstehe ist, wie ich dem "übergeordneten" GUI_Controller eine Referenz auf den StatusleisteController gebe.
Muss ich zuerst alle Bestandteile meiner GUI erzeugen und sie dann beim Erzeugen der Objekte GUI_Model, GUI-View und GUI_Controller übergeben, damit sie die richtige Referenz erhält?
Ist die Überlegung, mehrere "Ebenen" der MVC-Struktur zu haben überhaupt richtig oder gibt es immer nur ein Model, eine View und einen Controller im ganzen Programm.
Ich hoffe es ist einigermaßen klar geworden, wo mein Problem liegt und bin für jeden Hinweis dankbar.
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Nun wollte ich gerne eine Statusleiste einfügen und sie auch mit MVC strukturieren. Also habe ich Klassen wie StatusleiteModel, StatusleisteView und StatusleisteController erzeugt und alles implementiert, damit unterschiedliche Texte in der Statusleiste angezeigt werden können.
Dazu würde ich mal sagen: Man kanns aber auch übertreiben ;-)
Hier stellt sich meiner Meinung nicht nur die Frage ist das sinnvoll, sondern sogar: Ist das überhaupt richtig?
Mein Problem liegt nun darin, dass sich der Status (Zeichenmodus) ändert, wenn ein entsprechender Menupunkt ausgewählt wurde. Das bedeutet, dass mein GUI_Controller den StatusleistController anweisen müsste, etwas zu tun.
Was ich nun nicht verstehe ist, wie ich dem "übergeordneten" GUI_Controller eine Referenz auf den StatusleisteController gebe.
In wie fern mach Sinn, dass eine Statusleiste ein eigenes Model besitzt? Hier werden ja Informationen und Hinweise für den Benutzer angezeigt über den Zustände, Prozessfortschritte... oder der Anwender wird aufgefordert etwas zu tun.
Eine Statusanzeige/änderung, kommt entweder aus dem Controller an die View, z.B. per setStatus(...). Dieser setzt dann den Text in der als Statusleiste verwendeten Komponente. Oder der Status wird ohne Controller direkt von der View gesetzt.
Bleibt man bei dem Bsp. Zeichenmodes, der durch eine ComboBox, Button... vom Anwender aktiviert/geändert wird, kann man den Controller darüber benachrichtigen (evtl. enthält dieser ja auch bereits den Listener) und dieser weist die View an den Status anzupassen.
Je nach dem wie relevant der Status ist und wie tiefgreifend sich Änderungen dessen auswirken, könnte man das aber View intern regeln. Der Anwender klickt auf einen Knopf in der View, diese ändert das Zeichenwerkzeug der Zeichenfläche und aktualisiert den Status.

Aber so oder so, wenn man mal davon ausgeht man benötigt StatusleisteController, Model und View. Dann sollten diese von der GUI_View verwaltet werden. Der GUI_Controller sollte nichts von diesen drei Komponenten wissen, wie und womit der Status angezeigt wird ist Sache des "Haupt"Views
 

propra

Aktives Mitglied
Dazu würde ich mal sagen: Man kanns aber auch übertreiben ;-)
Hier stellt sich meiner Meinung nicht nur die Frage ist das sinnvoll, sondern sogar: Ist das überhaupt richtig?

Die Frage habe ich mir auch gestellt. Aber es ist mein erstes Projekt, in dem ich MVC umsetzen möchte. Habe also keinen wirklichen Plan, wann es Sinn macht es einzusetzen und wann nicht. Dies scheint ein Fall zu sein, wo man es dann nicht tut.

In wie fern mach Sinn, dass eine Statusleiste ein eigenes Model besitzt? Hier werden ja Informationen und Hinweise für den Benutzer angezeigt über den Zustände, Prozessfortschritte... oder der Anwender wird aufgefordert etwas zu tun.
Eine Statusanzeige/änderung, kommt entweder aus dem Controller an die View, z.B. per setStatus(...). Dieser setzt dann den Text in der als Statusleiste verwendeten Komponente. Oder der Status wird ohne Controller direkt von der View gesetzt.

OK, das bringt mich schon einmal ein Stück weiter. Sagen wir ich verzichte, aus den oben genannten Gründen, auf die MVC-Struktur in der Statusleiste, dann müsste der Controller der GUI den Status ändern, wenn ein entsprechender Menueintrag ausgewählt wurde.
Ich glaube mein Problem ist, dass ich nicht genau weiß, wo ich die Information nun speichern soll. Im Model? Ein Objekt vom Typ ZeichenModus? Wie wird so etwas gemacht?

Bleibt man bei dem Bsp. Zeichenmodes, der durch eine ComboBox, Button... vom Anwender aktiviert/geändert wird, kann man den Controller darüber benachrichtigen (evtl. enthält dieser ja auch bereits den Listener) und dieser weist die View an den Status anzupassen.
Je nach dem wie relevant der Status ist und wie tiefgreifend sich Änderungen dessen auswirken, könnte man das aber View intern regeln. Der Anwender klickt auf einen Knopf in der View, diese ändert das Zeichenwerkzeug der Zeichenfläche und aktualisiert den Status.

Aber so oder so, wenn man mal davon ausgeht man benötigt StatusleisteController, Model und View. Dann sollten diese von der GUI_View verwaltet werden. Der GUI_Controller sollte nichts von diesen drei Komponenten wissen, wie und womit der Status angezeigt wird ist Sache des "Haupt"Views

Bisher hatte ich es so, dass in der GUI_View eine Methode createStatusBar() aufgerufen wird.
Java:
private JPanel createStatusbar() {
	StatusBarModel model = new StatusBarModel();
	StatusBarView view = new StatusBarView(model);
	StatusBarConrtoller controller = new StatusBarController(model, view);

return view;
}
Wird nun in der GUI ein Menupunkt ausgewählt, dann führt der GUI_Controller ja die entsprechende actionPerformed()-Methode aus. Diese soll dann den Status ändern und die View dazu bringen sich zu aktualisieren. Das kriege ich auch hin.
Probleme macht mir, wie oben bereits geschrieben, wo speichere ich die Information des Zeichenmodus ab, dass StatusBarController mitbekommt, dass sich etwas geändert hat und StatusBarView veranlasst sich zu aktualisieren.
Vielleicht habe ich aber auch einen grundsätzlichen Denkfehler drin.
Kann jemand evtl. etwas anschaulichen Code schreiben oder einen Link nennen, wo man etwas Code sieht, der diese Problematik abdeckt.
Also nur, wenn das nicht zu aufwendig ist. Ich würde auch gerne Code posten, weiß aber nicht genau, welche Stellen relevant sind.
 

Michael...

Top Contributor
Man muss grundsätzlich zwischen eine Zustand und der Darstellung eines Zustandes unterscheiden. Eine Statusleiste dient in meinen Augen ausschließlich der Darstellung von Information. Warum sollte eine Statusleiste noch Daten verwalten und speichern, sofern sie selbst nicht andere relevante Zustände einnehmen kann?
Der Zeichenmodus ist ein Zustand irgendeines anderen Objekts, z.B. Zeichenwerkzeug, Zeichenbereich... und muss ja innerhalb dieses Objekts oder dessen Model (falls notwendig) gespeichert werden. Der Statusleiste ist es ja egal welchen Zustand irgendein Objekt, das sie nicht einmal kennt hat. Sie muss nur Informationen/Hinweise für den Anwender anzeigen, wenn sie dazu aufgefordert wird. Da eine Statusleiste üblicherweise Bestandteil einer View ist, fordert jeder der eine Information anzeigen will die View (und nicht die Statusleiste direkt) dazu auf: Bitte zeige Status xy an.

Hier mal ein Beispiel - zwecks Übersichtlichkeit ohne Model .
Java:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class VCDemo {
	
	interface ControllerInterface {
		public void informMe(String msg);
	}
	
	class Controller implements ControllerInterface {
		private View view;
		
		public Controller() {
			view = new View();
			view.setController(this);
			
			JFrame frame = new JFrame();
			frame.setBounds(0, 0, 500, 200);
			frame.setLocationRelativeTo(null);
			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			frame.add(view);
			frame.setVisible(true);
		}
		
		public void informMe(String msg) {
			if (msg.equals("please change status"))
				view.updateStatus("  something made controller to change status");
		}
	}
	
	class View extends JPanel {
		private JLabel statusLabel;
		private ControllerInterface controller;
		
		public View() {
			this.setLayout(new GridLayout(2, 1, 10, 10));
			JPanel panel = new JPanel(new GridLayout(1, 2, 10, 10));
			JButton button1 = new JButton("change status view intern");
			JButton button2 = new JButton("change status via controller");
			panel.add(button1);
			panel.add(button2);
			this.add(panel);
			this.add(statusLabel = new JLabel());
			
			button1.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					updateStatus("  status change wasn't relevant for others an so changed by the view itself");
				}
			});
			button2.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					if (controller!=null)
						controller.informMe("please change status");
				}
			});
		}
		
		public void updateStatus(String text) {
			statusLabel.setText(text);
		}
		
		public void setController(ControllerInterface controller) {
			this.controller = controller;
		}
	}
	
	public static void main(String[] args) {
		new VCDemo().new Controller();
	}
}
 

propra

Aktives Mitglied
Hallo Michael,

nachdem ich nun noch etwas Zeit hatte über mein Problem nachzudenken wollte ich mich noch für deine Mühen bedanken. Leider bin ich noch nicht so weit, dass ich sagen würde, ich kann das Thema als erledigt markieren. Hoffe also Du bleibst am Ball... :D

Man muss grundsätzlich zwischen eine Zustand und der Darstellung eines Zustandes unterscheiden. Eine Statusleiste dient in meinen Augen ausschließlich der Darstellung von Information. Warum sollte eine Statusleiste noch Daten verwalten und speichern, sofern sie selbst nicht andere relevante Zustände einnehmen kann?

Wie du schon in deinem ersten Post sagtest, kann man es auch übertreiben. Dies habe ich nun mittlerweile eingesehen.

Der Zeichenmodus ist ein Zustand irgendeines anderen Objekts, z.B. Zeichenwerkzeug, Zeichenbereich... und muss ja innerhalb dieses Objekts oder dessen Model (falls notwendig) gespeichert werden. Der Statusleiste ist es ja egal welchen Zustand irgendein Objekt, das sie nicht einmal kennt hat. Sie muss nur Informationen/Hinweise für den Anwender anzeigen, wenn sie dazu aufgefordert wird. Da eine Statusleiste üblicherweise Bestandteil einer View ist, fordert jeder der eine Information anzeigen will die View (und nicht die Statusleiste direkt) dazu auf: Bitte zeige Status xy an.

Das verstehe ich soweit und konnte auch dein Beispiel nachvollziehen. Danke für die Mühe, die Du dir damit gemacht hast.
Vielleicht versuche ich noch mal kurz zu erläutern was jetzt mein Problem ist.
In meiner Klasse GUI_View wird ein JFrame erzeugt, dem ich eine JMenuBar hinzugefügt habe. Wird im Menu der Punkt "Zeichne Kreis" ausgewählt, dann wird durch GUI_Controller der Zeichenmodus gesetzt.
Ich denke, die Vorgehensweise ist so in Ordnung.
Du sagst, das der Zeichenmodus Zustand irgendeines Objekts ist. Gut. Nehmen wir an, er ist der Zustand des Objektes Zeichenfläche.
Mein Problem besteht nun darin, dass ich dem GUI_Controller irgendwie die Zeichenfläche bekannt machen muss, damit er deren Status im ZeichenflächenModel ändern kann.
Für mein Verständnis habe ich hier 2 Objekte (GUI + Zeichenfläche) die ich auf je 3 Klassen (Model, View, Controller) aufgeteilt habe. Das Objekt Zeichenfläche ist aber Teil der GUI und beide müssen irgendwie Informationen austauschen.
Ich hoffe es ist nun etwas klarer geworden, wo mein Problem liegt.
 

bERt0r

Top Contributor
Es ist nicht sinnvoll eine Zeichenfläche auf Model, View und Controller aufzuteilen.
Mach dir mal klar was eine "Zeichenfläche" ist.
Auf eine Zeichenfläche wird gezeichnet. Sie zeichnet nicht selber, sie bestimmt nicht was sie zeichnet, sie merkt sich nicht was gezeichnet wurde, sie zeigt es nur an. Das ist der Inbegriff von einer View.
Dieselbe Überlegung solltest du bei jedem deiner Komponenten machen.
 

Michael...

Top Contributor
Mein Problem besteht nun darin, dass ich dem GUI_Controller irgendwie die Zeichenfläche bekannt machen muss, damit er deren Status im ZeichenflächenModel ändern kann.
Für mein Verständnis habe ich hier 2 Objekte (GUI + Zeichenfläche) die ich auf je 3 Klassen (Model, View, Controller) aufgeteilt habe. Das Objekt Zeichenfläche ist aber Teil der GUI und beide müssen irgendwie Informationen austauschen.
Auch hier sollt man sich Fragen, in wie weit benötigt die GUI und die Zeichenfläche jeweils ein Model. Was wird denn im Modell der GUI verwaltet?

Wenn man mal von Deinen 2x3 Klasse ausgeht, gibt es mehrere Wege den Informationsfluss abzubilden:
Code:
GUI_Controller
|--GUI_View
|         |--ZeichenFl_Controller
|                     |--ZeichenFl_View
|                     |--ZeichenFl_Model
|--GUI_Model
Code:
GUI_Controller
|--GUI_View
|--GUI_Model
|--ZeichenFl_Controller
           |--ZeichenFl_View
           |--ZeichenFl_Model
Aber wie bereits gesagt, sollte man sich überlegen in wie weit eine so extreme Aufteilung sinnvoll ist.
 

propra

Aktives Mitglied
Es ist nicht sinnvoll eine Zeichenfläche auf Model, View und Controller aufzuteilen.
Mach dir mal klar was eine "Zeichenfläche" ist.
Auf eine Zeichenfläche wird gezeichnet. Sie zeichnet nicht selber, sie bestimmt nicht was sie zeichnet, sie merkt sich nicht was gezeichnet wurde, sie zeigt es nur an. Das ist der Inbegriff von einer View.
Dieselbe Überlegung solltest du bei jedem deiner Komponenten machen.

Danke für die schnelle Antwort.
Dann werde ich die Zeichenfläche wieder "verschmelzen".
Macht es dann überhaupt Sinn, die MVC-Struktur mehr als 1x in seiner Anwendung zu haben? Wenn ja, hat dann jemand ein Beispiel?
 

propra

Aktives Mitglied
Auch hier sollt man sich Fragen, in wie weit benötigt die GUI und die Zeichenfläche jeweils ein Model. Was wird denn im Modell der GUI verwaltet?

Die GUI besteht im Moment aus einem JSplitPane, welches auf einer Seite eine TabbedPane erhält. Jedes Tab sollte dann eine Zeichenfläche erhalten. Im Zeichenflächen-Model sollten dann die gezeichneten Elemente auf der jeweiligen Zeichenfläche verwaltet werden. Das GUI-Model wollte ich dann dazu benutzen, um die einzelnen "Zeichnungen" zu verwalten.

Wenn man mal von Deinen 2x3 Klasse ausgeht, gibt es mehrere Wege den Informationsfluss abzubilden:
Code:
GUI_Controller
|--GUI_View
|         |--ZeichenFl_Controller
|                     |--ZeichenFl_View
|                     |--ZeichenFl_Model
|--GUI_Model
Code:
GUI_Controller
|--GUI_View
|--GUI_Model
|--ZeichenFl_Controller
           |--ZeichenFl_View
           |--ZeichenFl_Model
Aber wie bereits gesagt, sollte man sich überlegen in wie weit eine so extreme Aufteilung sinnvoll ist.

Weiter oben habe ich ja meine Überlegungen dargestellt.
Frage 1 wäre natürlich, ob es überhaupt Sinn macht daran festzuhalten oder es so, wie bERt0r vorgeschlagen hat, ganz zu verwerfen. Es ist auch keine Anforderung, dass man gleichzeitig mehrere Zeichnung in einem Fenster verwalten können soll. Fand es nur schön anwenderfreundlich.
Frage 2 wäre dann, welche der der beiden oberen Strukturen die bessere wäre und wieso?
Frage 3, wie sähe das in Code aus? Wenn ich es nämlich richtig deute, dann ist meine Struktur so, wie im ersten Vorschlag. In der Klasse GUI_View wird nämlich eine Methode createDrawingArea() aufgerufen, die so aussieht:
Java:
private JPanel createDrawingArea() {
    DrawingAreaModel model = new DrawingAreaModel();
    DrawingAreaView view = new DrawingAreaView(model);
    DrawingAreaConrtoller controller = new DrawingAreaController(model, view);
 
return view;
}
Müsste ich nun dem Zeichenflächen-Controller auch noch den GUI-Controller übergeben? In etwa so?
Java:
private JPanel createDrawingArea(GUI_Controller gcontroller) {
    DrawingAreaModel model = new DrawingAreaModel();
    DrawingAreaView view = new DrawingAreaView(model);
    DrawingAreaConrtoller controller = new DrawingAreaController(model, view, gcontroller);
 
return view;
}
 

Michael...

Top Contributor
Die GUI besteht im Moment aus einem JSplitPane, welches auf einer Seite eine TabbedPane erhält. Jedes Tab sollte dann eine Zeichenfläche erhalten. Im Zeichenflächen-Model sollten dann die gezeichneten Elemente auf der jeweiligen Zeichenfläche verwaltet werden. Das GUI-Model wollte ich dann dazu benutzen, um die einzelnen "Zeichnungen" zu verwalten.
In dem Fall könnte man das so verteilt machen.
Ein Gesamtmodell welches die Zeichnungen, verfügbare und aktive Zeichenwerkzeuge verwaltet und ein Zeichnungsmodell als Teil des Gesamtmodells, welches die in der Zeichnung enthaltenen Elemente verwaltet.
Der GUI_Controller würde dann Werkzeuge aktivieren, Zeichnungen löschen und neue erstellen. Den Zeichnungscontroller würde ich dann direkt in der GUI_View implementieren er verarbeitet Mausklicks und -bewegungen auf der Zeichnung und manipuliert die Daten im Zeichnungsmodell
Code:
GUI_Controller
|--GUI_View/ZeichenFl_Controller
|                     |--ZeichenFl_View
|                     |--ZeichenFl_Model
|--GUI_Model
In diesem Fall müssen GUI-Controller und Zeichenfl-Controller nichts von einander wissen.
 

propra

Aktives Mitglied
Hallo zusammen,

irgendwie komme ich hier immer noch nicht weiter.
Ich verstehe einfach nicht, wie ich die Objekte untereinander bekannt machen soll.
Weiter oben wurde gesagt, dass der Zeichenmodus teil der Zeichenfläche ist. Klingt für mich auch logisch.
Wenn nun in der GUI_View der entsprechende Menupunkt ausgewählt wird, muss der Zeichenmodus geändert werden. Die Information dazu steht im ZeichenflächenModel. Aber wie rufe ich es auf bzw. verknüpfe ich den GUI_Controller mit dem ZeichenflächenModel?
Wie und wo müssen die entsprechenden Objekte instanziiert werden?

Java:
public class GUI_Test {

	private static GUI_Model model;
	private static GUI_View view;
	private static GUI_Controller controller;
	
	public static void main(String[] args) {
		model = new GUI_Model();
		
		view = new GUI_View(model);
		view.createGUI();
		controller = new GUI_Controller(view, model);
		
		view.showGUI();
	}

}
In der Methode
Code:
createGUI()
rufe ich die Methode
Code:
createZeichenflaeche()
auf, die mir die Zeichenfläche erzeugt.
Java:
private Zeichenflaeche createZeichenflaeche() {
		
		ZeichenflaecheModel model = new ZeichenflaecheModel();
		ZeichenflaecheView view = new ZeichenflaecheView(model);
		ZeichenflaecheController controller = new ZeichenflaecheController(model, view);
		
		return view;
	}
 

Michael...

Top Contributor
Wenn nun in der GUI_View der entsprechende Menupunkt ausgewählt wird, muss der Zeichenmodus geändert werden. Die Information dazu steht im ZeichenflächenModel. Aber wie rufe ich es auf bzw. verknüpfe ich den GUI_Controller mit dem ZeichenflächenModel?
Ich würde sagen gar nicht. Kann zwar nicht abschätzen, was da alles dahinter steckt. Aber inwiefern muss der Zeichenmodus über den GUI Controller gesteuert werden. Ist das nicht eher eine Sache zwischen GUI View und Zeichenfläche? (Also GUI View als Controller der Zeichenfläche)
 

propra

Aktives Mitglied
Ich würde sagen gar nicht. Kann zwar nicht abschätzen, was da alles dahinter steckt. Aber inwiefern muss der Zeichenmodus über den GUI Controller gesteuert werden.

Mein bisheriges Verständnis war immer so, dass der Controller eine Eingabe der View nimmt und dann die Änderungen im Model veranlasst. Also ist für mich der logische Schritt GUI_Controller muss etwas tun. Da die Information, die er ändern soll im ZeichenflächeModel steht, muss er dieses ändern und braucht eine Verbindung.

Ist das nicht eher eine Sache zwischen GUI View und Zeichenfläche? (Also GUI View als Controller der Zeichenfläche)

Also wenn ich dich jetzt richtig verstehe, dann kommen der GUI_View also 2 Aufgaben zu. Zum einen soll sie die Ansicht meines Fensters sein und zum anderen soll sie gleichzeitig der Controller für die Zeichenfläche sein?
 

Michael...

Top Contributor
Mein bisheriges Verständnis war immer so, dass der Controller eine Eingabe der View nimmt und dann die Änderungen im Model veranlasst.
Das hängt immer vom Steuerungsbedarf des Prozesses ab und wie strikt man sich an das MVC Konzept halten muss/will.
Hier stellt sich m.M. auch die Frage in wie weit ist eine Änderung des Zeichenmodus für GUI Controller und GUI Model relevant. Wird der Zeichenmodus im GUI Model verwaltet oder eher im Umfeld der Zeichnungsfläche zumal in dem Fall gleichzeitg mehrere Zeichnungsflächen gleichzeitig existieren können.
Also wenn ich dich jetzt richtig verstehe, dann kommen der GUI_View also 2 Aufgaben zu. Zum einen soll sie die Ansicht meines Fensters sein und zum anderen soll sie gleichzeitig der Controller für die Zeichenfläche sein?
So würde ich - aufgrund der mir gekannten Rahmenbedingungen - das System aufziehen. Man hat ein Subsystem ZeichnungsView, Zeichnungsmodell mit den Elementen der Zeichnung und GUI (View). Letztere tritt hier primär als Controller diese Subsystems auf. Und ein Hauptsystem mit Controller, Model zur Verwaltung der verschiedenen Zeichnungen und GUI View die hier nur als GUI auftritt.
Also ein MVC in MVC System.
 

propra

Aktives Mitglied
Hallo Michael,

auch wenn es schon ein paar Tage her ist, wollte ich mich trotzdem eben noch kurz bedanken.
War ja eine ziemlich schwere Geburt. :D

So würde ich - aufgrund der mir gekannten Rahmenbedingungen - das System aufziehen. Man hat ein Subsystem ZeichnungsView, Zeichnungsmodell mit den Elementen der Zeichnung und GUI (View). Letztere tritt hier primär als Controller diese Subsystems auf. Und ein Hauptsystem mit Controller, Model zur Verwaltung der verschiedenen Zeichnungen und GUI View die hier nur als GUI auftritt.
Also ein MVC in MVC System.

Ich habe es jetzt so realisiert und bisher auch keine Probleme feststellen können.
 

propra

Aktives Mitglied
Wenn Du sie in irgendeiner Form hast bzw. sie sich leicht erstellen lässt, hier findest Du in jedem Fall jemanden, der sich das interessiert anschauen würde.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Unsicher, ob das Code richtig ist Allgemeine Java-Themen 4
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1
L Dateien richtig auslesen Allgemeine Java-Themen 6
A Ist ein enum hier richtig? Enum toString() Methode. Allgemeine Java-Themen 1
Thallius Wie parse ich dieses Datum richtig? Allgemeine Java-Themen 5
X Files.walkFileTree zählt nicht richtig Allgemeine Java-Themen 2
F Schleife funktioniert nicht richtig Allgemeine Java-Themen 13
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
P Variable wird in for - loop nicht richtig hochgezählt Allgemeine Java-Themen 11
A Methodenaufruf funktioniert nicht richtig Allgemeine Java-Themen 5
H .jar Datei startet nicht richtig bei Doppelklick Allgemeine Java-Themen 11
N Java MVC Pattern richtig anwenden Allgemeine Java-Themen 24
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
T iText mit eclipse richtig in Java-Projekt einbinden Allgemeine Java-Themen 2
The Pi Android TextView richtig formatieren Allgemeine Java-Themen 1
MaxG. Bilddateien richtig einbinden Allgemeine Java-Themen 9
J Erste Schritte DateTimeFormatter richtig anwenden Allgemeine Java-Themen 3
R Erste Schritte Object reference funktioniert nicht. Wie mach ichs richtig? Allgemeine Java-Themen 3
F ExecutorService richtig anwenden Allgemeine Java-Themen 0
J .exe Dateien werden nicht gestartet obwohl Pfad richtig Allgemeine Java-Themen 6
N event_scheduler richtig setzen? Allgemeine Java-Themen 1
N ArrayList in eigenem Object nicht richtig serialisierbar Allgemeine Java-Themen 14
L Daten ohne Datenbank richtig abspeichern Allgemeine Java-Themen 5
buggy84 Ausführen einer Batch mit Parameterübergabe funktioniert nicht richtig Allgemeine Java-Themen 18
G Tabelle wird nicht richtig dargestellt Allgemeine Java-Themen 9
A Datenstrukturen richtig anlegen/laufzeitanalyse Allgemeine Java-Themen 10
I Datei wird nicht richtig gelöscht Allgemeine Java-Themen 7
L iText PDF Form-Felder werden nach Bearbeitung mit iText nicht mehr richtig erkannt. Allgemeine Java-Themen 2
K Thread richtig benutzen Allgemeine Java-Themen 3
H [Logback || log4j] Wie richtig loggen / Log Instanzen verwalten Allgemeine Java-Themen 2
K Spiele starten nicht richtig Allgemeine Java-Themen 2
N Collisiondetection - Richtig gemacht? Allgemeine Java-Themen 4
L repaint() methode funktioniert nicht richtig! Allgemeine Java-Themen 3
A String.split() funktioniert nicht richtig Allgemeine Java-Themen 4
B Text wird nicht richtig angezeigt Allgemeine Java-Themen 9
D Thread-Array (richtig) überwachen Allgemeine Java-Themen 3
C Variablenwert wird nicht richtig zurückgegeben Allgemeine Java-Themen 8
C Reguläre Ausrücke Punkte im Satz richtig erkennen Allgemeine Java-Themen 6
D Java läuft nicht richtig Allgemeine Java-Themen 12
H List wird nicht richtig gefüllt Allgemeine Java-Themen 6
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
T Array durchsuchen - aber richtig Allgemeine Java-Themen 7
C cmd Programm arbeitet nicht richtig Allgemeine Java-Themen 3
L ANT - So richtig? Allgemeine Java-Themen 4
A Java-Anwendung "richtig" schließen ohne JVM zu beenden Allgemeine Java-Themen 2
D [SOLVED] Collection wird nicht richtig per Konstruktor übernommen Allgemeine Java-Themen 8
I Wie richtig kommentieren? Allgemeine Java-Themen 33
G Welche Schreibeweise ist richtig Allgemeine Java-Themen 16
G Font richtig vergrößern Allgemeine Java-Themen 4
M TransferHandler.exportDone will nicht so richtig Allgemeine Java-Themen 2
V Java-Programm richtig neustarten? Allgemeine Java-Themen 9
S Model richtig aktualisieren Allgemeine Java-Themen 7
J jar mit nicht richtig installierter JRE !? Allgemeine Java-Themen 2
D SwingWorker, was ist richtig? Allgemeine Java-Themen 2
H Kommunikation mit einem c-Prozess funzt nicht richtig Allgemeine Java-Themen 5
R Thread funktioniert nicht richtig Allgemeine Java-Themen 8
G Date wird nicht richtig geparsed Allgemeine Java-Themen 3
F Wie Fachthemen richtig erklären? Allgemeine Java-Themen 6
E .jar - Datei funktioniert nicht richtig Allgemeine Java-Themen 10
G JTable wird nicht richtig aufgebaut Allgemeine Java-Themen 9
A Wie liefere ich mein Java-Programm richtig aus? Allgemeine Java-Themen 10
P Speicherresourcen schonen - WeakReferences richtig einsetzen Allgemeine Java-Themen 6
P Garbage Collector funktioniert nicht richtig? Allgemeine Java-Themen 12
M Datum nicht richtig geprüft, warum? Allgemeine Java-Themen 9
Ebb String-Array richtig löschen! Allgemeine Java-Themen 3
H Bilder richtig speichern und laden Allgemeine Java-Themen 4
G Geistercode beim Compilern *_* ( ja ihr lest richtig ) Allgemeine Java-Themen 6
M Speichernutzung wohl nicht richtig verstanden? Allgemeine Java-Themen 6
C MVC richtig einsetzen Allgemeine Java-Themen 30
M Umlaute richtig dastellen? Allgemeine Java-Themen 4
U ASCII ZEichenkette wird net richtig ausgegeben Allgemeine Java-Themen 2
S AWT Threads richtig beenden! Wie? Allgemeine Java-Themen 9
C Java-Uhren ticke nicht richtig? Allgemeine Java-Themen 3
M Java 1.5 <> 1.4 - Nicht richtig abwärtskompatibel? Allgemeine Java-Themen 13
I Ist JNI hier richtig? Allgemeine Java-Themen 8
T Fließkomma (double) richtig runden Allgemeine Java-Themen 7
R Float richtig in Integer ? Allgemeine Java-Themen 4
S Tipps: java richtig lernen - wie? Allgemeine Java-Themen 3
J Wie stoppe ich einen Thread richtig? Allgemeine Java-Themen 21
G Escape-Sequenzen werden nicht korrekt umgesetzt Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben