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?
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: