MVC - wo Liste der ComboBox-Items ermitteln

OlliL

Bekanntes Mitglied
Hallo,

ich habe in meiner kleinen Swing-Anwendung eine Reihe von ComboBoxen. Als Beispiel mal eine mit den Monaten 1-12. Dahinter steht ein Object (ComboBoxItem) welches 2 Eigenschaften (Id + Bezeichnung) hat. Angezeigt wird die Bezeichnung, datentechnisch verwendet wird die Id.

Nun habe ich damit angefangen, die möglichen Items der jeweiligen ComboBox in der Initialisierung meines Models zu ermitteln, als Liste dort abzulegeni und gleichzeitig an die View via notifyObservers zu senden. Die View hat mit dieser Liste dann die ComboBox aufgebaut.
Die Selektion wurde im Model als ComboBoxItem abgelegt.

Nun habe ich den Fall, das ich a) in mehreren unterschiedlichen Views / Models gleiche ComboBoxen habe, ich bei der Listen-Ermittlung also doppelten Code in den jeweiligen Models habe.
Ausserdem habe ich in einer View eine ComboBox und in einer anderen View bei gleichem Model ein TextField.

Bin zum Schluss gekommen, dass das alles irgendwie Mist ist.

Ich denke ich sollte in dem Model nur die jeweilige Id halten. Wie diese Id in der jeweiligen View dargestellt wird, ob als Auswahl einer ComboBox oder als TextFeld sollte wohl besser der View überlassen bleiben.

Bleibt nur noch zu klären - wie ermittle ich dann für eine ComboBox-verwendende-View die Liste der möglichen Selektionen? Ich will ja für gleiche ComboBoxen welche ich in verschiedenen Views habe, nur einen Initialisierungscode (rufe ein EJB auf, bekomme alle Werte, mache eine Liste aus ComboBoxItem) haben.
Und - in der View ohne ComboBox - dort will ich im TextFeld / Label natürlich auch die Beschreibung anzeigen und nicht irgend eine Zahl.

Was ist dort am sinnvollsten? Eine Helper-Klasse welche static Methoden zur Verfügung stellt? Irgendwie nicht wirklich OOP-like.

Was ist davon zu halten, von jeder "Art" von ComboBox ein ComboBoxModel welches sich z.B. von MutableComboBoxModel ableitet zu erstellen? Wie befülle ich dann das Model am besten? Im Konstruktor?
Das Model müßte ich dann aber auch in den Views nutzen welche die Bezeichnung passend zur Id nur in einem JLabel darstellen. Wäre das unsauber?
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Klingt etwas wirr (und bei dem Lärm kann man sich ja nicht konzentrieren) aber ... "ComboBoxItem" im Modell klingt merkwürdig. Wäre die Übersetzung von "ID" zu "Bezeichner" nicht ggf. Sache eines Renderers? So dass im Modell nur die IDs (z.B. Enum-Elemente) liegen, und jeder Teil der View sich darum kümmert, die passend anzuzeigen (ggf. eben mit einer "MonthListCellRenderer"-Klasse) ...? Aber vielleicht muss ich es mir morgen noch ein paar mal in Ruhe durchlesen... :oops:
 

OlliL

Bekanntes Mitglied
Frohes Neues!

Jo. Ich schrieb ja schon, das im Model wohl am besten nur die "ID" liegen sollte.
Ist dann halt nur die Frage wie ich in Views mit Combo-Boxen am besten alle möglichen Einträge dieser ComboBox in selbige bekomme. Aktuell kuemmert sich halt das Model darum die Liste der Einträge zu besorgen, aber das ist vom Design her irgendwie Mist und ist halt auch teilweise redundant.

Daher suche ich primär nach ner guten Möglichkeit die Listen von ComboBox-Elementen vernünftig durch einen Code zu erzeugen und an mehreren Stellen zu verwenden.

Habe im Model z.B. aktuell sowas stehen:

Java:
	private Vector<ComboBoxItem>					comboMonth;

	public void getComboMonth() {
		if (comboMonth == null) {
			DomainBeanIf domainBean = GetEJBObject.getDomainBean();
			List<DomainValueDTO> domainValueList = domainBean.getAllDomainValues(getSessionDTO(),
					DomainConstants.DOM_MONTHS);

			comboMonth = new Vector<ComboBoxItem>();

			for (DomainValueDTO i : domainValueList) {
				comboMonth.addElement(new ComboBoxItem(Long.valueOf(i.getValue()), i.getMeaning()));
			}
		}

		sendUpdate2Observers(new PropertyDTO(PropertyConstants.PROPERTY_COMBO_LIST_MONTH,
				comboMonth));

	}

Die Methode wird beim initialisieren des Models aufgerufen und meine View bekommt die Liste via Observer Pattern.
Nur habe ich das Zeugs halt in jedem Model wo ich ne ComboBox mit Monaten brauche... Klar man könnte das nun in eine Helper-Klasse mit static auslagern, Aufruf in die View rein und gut ist - Aber ist das "gut"? Monate ist auch nur ein Beispiel. Z.B. Kunden-ID und Kunden-Name könnte ein anderes sein. Es geht also nicht nur um ComboBoxen mit einfachen Daten wie Monatsnamen sondern auch Businessdaten. In eine View gehört das meiner Meinung nach irgendwie nicht rein. Und wenn man am Observer Pattern festhalten will.... verzwickt verzwickt... ;)
 

Marco13

Top Contributor
Ja, auch wenn's schon etwas leiser wird, wird das "heute" wohl nichts mehr, aber... Etwas verwunderlich finde ich auch, dass die Information (d.h. der Vector) über den "Event" weitergereicht wird. Ich gehe üblicherweise in die Richtung, dass das Modell nur sagt: Es hat sich was geändert (und sich jeder, der sich für den neuen Zustand interessiert, diesen aus dem Modell holen kann - als unveränderliche (!) Liste). Aber da gibt es vermutlich verschiedenSTe Ansätze und Stratgien.

Nochmal zusammengefasst: Es geht jetzt darum, dass diese Methode "genau so" nochmal in mehreren anderen Modellen liegt? Ich finde, es spricht da nichts gegen statische Utility-Methoden, die man dort dann nur noch aufruft, aber auch DA gibt es wieder mal unterschiedliche Ansichten ( http://www.java-forum.org/allgemein...-statische-utility-methoden-2.html#post492045 ) - mal schauen ob noch jemand was dazu sagt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Filtern von TableView Liste Allgemeine Java-Themen 2
B Liste aller Kombintionen mit Einschränkungen Allgemeine Java-Themen 8
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B Liste ändern während Iteration über Diese? Allgemeine Java-Themen 16
D Erste Schritte Liste erweitern Allgemeine Java-Themen 11
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
L allgemein Strings händisch in Liste sortieren Allgemeine Java-Themen 47
M einfach verkettete Liste verstehen Allgemeine Java-Themen 23
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
Gaudimagspam Skip Liste erstellen in Java Allgemeine Java-Themen 3
G Java Editor Löschen doppelter Zahlen einer Liste Allgemeine Java-Themen 2
bueseb84 Spring Boot Entity mit Liste Allgemeine Java-Themen 4
MiMa Werte in liste speichern? Allgemeine Java-Themen 3
Curtis_MC Collections Liste anhand mehrere Kriterien sortieren Allgemeine Java-Themen 6
K verkettete Liste Allgemeine Java-Themen 3
G Liste (UsageStats) sortieren (Android) Allgemeine Java-Themen 5
T Google Links in einer Liste Allgemeine Java-Themen 4
looparda Liste filtern nach Prädikaten verschiedener Typen Allgemeine Java-Themen 3
OSchriever Einfach verkettete Liste ändern Allgemeine Java-Themen 43
L Liste überschreibt alte Elemte Allgemeine Java-Themen 10
H Länge einer verketteten Liste Allgemeine Java-Themen 4
E Erstellen einer Liste mit einer maximalen Menge an Elementen Allgemeine Java-Themen 13
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
S Methoden Liste soll Methode aus innerer Klasse aufrufen Allgemeine Java-Themen 4
L Erste Schritte Liste von Datums filter nach Monate Allgemeine Java-Themen 4
Y Liste in Stream Packen Allgemeine Java-Themen 1
K Einfache Verkettete Liste mit Node Allgemeine Java-Themen 3
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
perlenfischer1984 Liste mit generics zurück liefern Allgemeine Java-Themen 8
S Verkettete (Teil)Liste sortieren ( rekursiv bis n) Allgemeine Java-Themen 2
G Liste zwischen zwei Kalenderdaten erstellen Allgemeine Java-Themen 3
B Wie vergleiche ich Strings in einer Liste? Allgemeine Java-Themen 5
Viktim Threads Liste In unterschiedlichen Threads bearbeiten Allgemeine Java-Themen 23
A Collections Inhalt einer Liste mit Inhalt anderer Liste vergleichen ? Allgemeine Java-Themen 7
I Abstrakte Datentypen - Liste Allgemeine Java-Themen 9
D Datentypen Klassenattribut aus Objekt in generischer Liste Allgemeine Java-Themen 15
P Liste zu Objekt umwandeln Allgemeine Java-Themen 4
Z In die Liste kann ich nichts adden Allgemeine Java-Themen 16
C Liste checken auf MINDESTENS ein Objekt | Bukkit Allgemeine Java-Themen 3
M liste von listen anders ausgeben Allgemeine Java-Themen 1
B Per Buttonklicks einer Liste Wörter hinzufügen - Wie umsetzen? Allgemeine Java-Themen 11
H Liste sortieren anhand optionalem Property Allgemeine Java-Themen 3
L Liste führt sich nicht weiter Allgemeine Java-Themen 5
A Input/Output Liste der Dateien in einem Ordner in einer Jar Datei erhalten Allgemeine Java-Themen 11
J Fragen zu generischer doppelt verketteter Liste (bei fehlendem Grundverständnis) Allgemeine Java-Themen 1
B Prüfen, ob ein Element in der Liste nicht existiert Allgemeine Java-Themen 3
B Klassen JTable mit einer Liste Allgemeine Java-Themen 0
X HTTP Auslesen der Ergebnisse von einer Webseite und in eine Liste packen Allgemeine Java-Themen 1
A Auslesen einer Datei sowie ausgeben als Liste in App Allgemeine Java-Themen 5
E Liste löscht sich selbstständig Allgemeine Java-Themen 5
H Liste von Objekten generisch sortieren Allgemeine Java-Themen 0
D Liste anhand Standardnormalverteilung befüllen Allgemeine Java-Themen 1
M Threads synchroner Zugriff (add/delete/read) auf eine Liste Allgemeine Java-Themen 6
T Datentypen Eine Liste - verschiedenen Klassen - eine Abstracte Klasse Allgemeine Java-Themen 3
M Werte aus DB in Liste speichern ohne mehrfach speicherung Allgemeine Java-Themen 18
G Liste anzahl der gleichen Objekte Allgemeine Java-Themen 6
S Pattern.Match Suche: For Schleife einbinden und in Liste schreiben Allgemeine Java-Themen 3
O aus Liste ein beliebiges Element auswählen Allgemeine Java-Themen 7
J Liste aller Com-Ports - zweistellige Ports? Allgemeine Java-Themen 15
MiMa Liste von Pfaden in eine textArea schreiben Allgemeine Java-Themen 7
K kontinuierlich aktuelle Bestellsystem-Liste mit farbigem Status Allgemeine Java-Themen 2
A Auswählbare Liste Allgemeine Java-Themen 2
D Sortieren von Liste zu unperformant Allgemeine Java-Themen 6
N Liste gesucht Allgemeine Java-Themen 2
Z Sortiertes Einfügen in doppelt verkettete Liste Allgemeine Java-Themen 5
S Probleme beim Auslesen einer Liste Allgemeine Java-Themen 8
O JSON String bauen aus Liste Allgemeine Java-Themen 2
M Über Liste verschiendene JComponents mit eigenem implementierten Interface ansprechen Allgemeine Java-Themen 7
T Hashmap mit geordneter/ungeordneter liste als Value Allgemeine Java-Themen 5
D Zugriff auf Array-Liste Allgemeine Java-Themen 19
S Threads Liste mit Objekten in Teillisten zerlegen und abarbeiten Allgemeine Java-Themen 3
R ThreadPool - vorhandene thread liste überprüfen bzw. aufräumen Allgemeine Java-Themen 3
pg1337 Liste füllen Allgemeine Java-Themen 2
U Große Liste von Strings mit indiziertem Zugriff Allgemeine Java-Themen 31
B Properties File Liste Allgemeine Java-Themen 3
Gossi Collections Liste zusammenfassen für JSP Allgemeine Java-Themen 4
Gossi Collections (Unbekannte) Liste Sortieren Allgemeine Java-Themen 10
T Collections Liste schnell/nebenläufig durchgehen Allgemeine Java-Themen 2
M Objekt aus Liste in Liste suchen/löschen Allgemeine Java-Themen 6
Q "Doppelte" Einträge einer Liste entfernen Allgemeine Java-Themen 14
C Exponentielle Verteilung in einer Liste Allgemeine Java-Themen 7
Nic.o liste der installierten Zertifikate ?! Allgemeine Java-Themen 3
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
M Verständnisfragen bezüglich Liste Allgemeine Java-Themen 3
S AWT Wie bekomme ich eine Liste aller chars in einem Font? Allgemeine Java-Themen 3
J Zeichenketten-Liste filtern Allgemeine Java-Themen 6
S Aus einer Liste<Oberklasse> alle Elemente die eine bestimmte Unterklasse von Oberklasse haben filter Allgemeine Java-Themen 8
K Liste aller implementierenden Klassen einer Oberklasse anzeigen Allgemeine Java-Themen 4
M Eintrag verschwindet aus Liste Allgemeine Java-Themen 3
E Objekte in einer Liste suchen. Allgemeine Java-Themen 4
I Über eine Liste iterieren und Objekte löschen. Wie löst man das sauber? Allgemeine Java-Themen 5
reibi Kopie einer Liste Allgemeine Java-Themen 4
N Liste mit Map abgleichen extrem langsam Allgemeine Java-Themen 6
C Darstellung der Liste bei vielen Daten extrem langsam Allgemeine Java-Themen 11
T Liste sortieren Allgemeine Java-Themen 6
L Objekte in Liste packen Allgemeine Java-Themen 2
N Liste aendern waehrend des iterierens ueber selbige Allgemeine Java-Themen 11
B Datenstruktur: Liste Allgemeine Java-Themen 5
S Liste mit verschiedenden Objekten Allgemeine Java-Themen 15
D Einfach verkettete Liste Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben