Java Reference
In-Depth Information
ablaufs nicht mehr ändern sollen. Eine Auswahlliste, die die Wochentage Montag bis
Sonntag zur Auswahl bereitstellt, erfordert lediglich das Ersetzen des Array-Literals
"Item One", "Item Two" durch die Liste der Wochentage "Montag", "Dienstag", "Mitt-
woch", "Donnerstag", "Freitag", "Samstag", "Sonntag".
Im Programm Notenbilanz soll die Notenliste aber erst zur Laufzeit gefüllt werden, und
es soll möglich sein, jederzeit weitere Noten zu ergänzen oder aus der Liste zu entfer-
nen. Für diesen Fall sind an den Vorgaben einige Änderungen vorzunehmen.
Bevor der Quelltext an unsere Bedürfnisse angepasst wird, soll er erläutert werden. Das
Listing 11.10 lässt erkennen, dass eine Listbox aus zwei Komponenten besteht. Zunächst
wird ein ListModel definiert. Der Name des ListModels wird vom Namen der eingefüg-
ten JList abgeleitet, indem Sie an den gewählten Namen (hier jListNoten ) den Bezeich-
ner des Models anhängen. Das ListModel ist für die Aufnahme und Verwaltung der
Listeneinträge verantwortlich. Die in den Frame eingefügte JList ist dagegen für die Dar-
stellung, also das optische Erscheinungsbild, der Liste zuständig. Damit Sie die beiden
Komponenten überhaupt verwenden können, wurden die beiden Packages javax.
swing.ListModel und javax.swing.DefaultComboBoxModel eingefügt.
11
Ich kenne nicht den Grund für die Verwendung von DefaultComboBoxModel als Typ für
das erzeugte ListModel. Ich kann nur vermuten, dass der Einfachheit halber hier die
gleiche Quellcodepassage wie für die Komponente ComboBox verwendet wird. Da die-
ses DefaultComboBoxModel keine Methode mitbringt, um einen weiteren Eintrag hinzu-
zufügen, ist es für unsere Zwecke nicht optimal geeignet. Ändern Sie deshalb das
ListModel von DefaultComboBoxModel auf DefaultListModel . Außerdem sollten Sie auch
die Initialisierung mit dem Array-Literal komplett entfernen und den Konstruktor mit
leerer Parameterliste aufrufen, damit die Liste beim Programmstart leer ist.
In der Quellcodevorgabe ist das ListModel als lokale Variable definiert. Wenn Sie nun in
anderen Methoden, etwa zum Hinzufügen oder Entfernen einer Note, auf das ListModel
zugreifen müssen, ist dort eine neue lokale Variable für das ListModel erforderlich. Der
Variablen müssen Sie über die Methode jListNoten.getModel() die Referenz auf das
ListModel der Notenliste zuweisen. Bequemer ist der Zugriff von jeder Methode aus
möglich, wenn Sie das ListModel von vornherein als Eigenschaft des Frames definieren:
...
private JList jListNoten;
private DefaultListModel jListNotenModel;
private JLabel jLNoten;
...
Listing 11.11 Definition des ListModels als Eigenschaft der Frame-Klasse
Search WWH ::




Custom Search