# MVC: Update von View und Controller



## Fry (22. Feb 2006)

Hallo zusammen,

ich habe mich dank des Forums und der Tuts zu einem funktionierenden MVC Modell durchgebissen. Jetzt hätte ich eine neue "Anforderung" und weiß nicht genau wie und ob das so geht.

Bisher habe ich folgendes: Eine kleine GUI die in zwei Teile unterteilt ist. Rechts werden Diagramme angezeigt, links kann ich durch einen JTree navigieren und Werte auswählen, die dann in der View dargstellt werden.

Was ich jetzt möchte: Jetzt hätte ich gerne, dass das Controllerpanel (JPanel) erweitert wird. Ich habe bis dato jetzt  links zwei Panel untereinander. Das obere ist der JTree (JPanel in "CENTER") (wie gehabt) und darunter habe ich ein JPanel welches eine paar Knöpfe und JComboBoxen hält (JPanel SOUTH).
Jetzt soll es möglichsein, dass sich diese JComboBoxen abhängig von dem gewählten Diagramm ändern. Praktisches Beispiel: Ich wähle Diagramm "Umsatz 2005" aus, und die JComboBoxen werden mit Daten aus 2005 gefüllt.

Nun habe ich das natürlich schon probiert, folgende Frage:

Ich habe ja in dem Modell das von Observer abgeleitet ist die folgende Methode:



```
public void update(Observable ob, Object arg)
	{
		Model m = (Model) ob;
		//if the panel is not set yet, ...
		if(panel == null)
			panel = new JPanel();
		panel = m.getChartPanel();
				
		
		this.removeAll();
		this.add(panel);
		this.repaint();
		this.validate();

		
	}
```

Müßte ich diese nun erweitern? sprich ich will ja zwei Bereiche updaten. Das oben dargestellte ChartPanel ist immer das was die "View" enthält. Da ja nur ein Argument übergeben wird, frage ich mich ob und wenn ja wie ich das realisieren kann, dass sich hier einmal die View und dann der Controller updated.

Danke
Fry


----------



## AlArenal (22. Feb 2006)

Beispielsweise könnte der View nen Event abfeuern und ein "Controller für Controller" darauf lauschen und entsprechend dem Event im View den Controller austauschen.


----------



## Fry (23. Feb 2006)

Hallo!

Danke für deine Antwort - dem entnehme ich mal, es ist also im MVC nicht vorgesehen den View und den Controller upzudaten. Bevor ich mir jetzt einen abbreche, wie machen das denn größere Applikationen? Auch so wie du es beschrieben hast? Ich suche halt eine möglichst einfache und praktikable Lösung!

Fry


----------



## AlArenal (23. Feb 2006)

Das Beispiel von oben stammt aus einer etwas umfangreicheren kommerziellen Lib. Das heißt nicht, dass nicht auch andere Umsetzungsvarianten denkbar wären, aber irgendwann muss sich ein Entwickler ja mal entscheiden und ne schlechte Entscheidung ist noch immer besser als gar keine.

Wirklich zentral bei MVC ist die Abtrennung der Datenschicht. Damit ist das wichtigste erstmal geschafft. Und machen wir uns nichts vor, keiner von uns macht von Beginn an alles so, wie er es später mit mehr Erfahrung machen würde. Zum Teil weil Projekte und Anforderungen sich entwicklen, zum Teil weil man ständig dazulernt und sich das Verständnis entwickelt. Bevor du nun also wochenlang gar nichts programmierst und nur verzweifelt nach der allerbesten Lösung suchst, setz dich einfach ran, mach es und lerne. Da gilt dann was ich oben zum entscheiden schrieb. 

http://de.wikipedia.org/wiki/MVC


----------



## Fry (23. Feb 2006)

Hoi!

Jo stimmt, hast recht. Ich versuch mal was und heißt ja nicht das man später nicht nocheinmal alles umbaun kann wenn man was besseres weiß

Thx
Fry


----------



## AlArenal (23. Feb 2006)

Wenn man nicht gerade nur kleine Testklmaotten oder so entwickelt, muss man ziemlich häufig noch nachträglich ran und was umbauen. Je nachdem ob und was für ein Projektmanagement man betreibt, gehört das auch einfach dazu. Eine Software entwickelt sich ja auch und im Laufe der Zeit kommen Anforderungen mit rein, an die vorher keine gedacht hat und schon muss man einiges umstellen.

Gehört einfach dazu...


----------

