16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Programmieren</strong> <strong>in</strong> <strong>Java</strong><br />

5.6.5.3 Listen und Comboboxen<br />

JList<br />

JList ist e<strong>in</strong> typisches Beispiel für das Mo<strong>de</strong>l-View-Controller-Pr<strong>in</strong>zip. Dabei stehen<br />

für die View (JList) mehrere Mo<strong>de</strong>lle zur Verfügung. Am wichtigsten ist das<br />

Datenmo<strong>de</strong>ll vom Typ ListMo<strong>de</strong>l, das Auswahlmo<strong>de</strong>ll (ListSelectionMo<strong>de</strong>l)<br />

und die Klassen für die Darstellung <strong>de</strong>r E<strong>in</strong>träge (ListCellRen<strong>de</strong>rer).<br />

Konstruktoren: JList verfügt über Konstruktoren, die e<strong>in</strong>e Liste aus e<strong>in</strong>em Vector<br />

o<strong>de</strong>r Array 299 erzeugen. Da die Daten nicht direkt <strong>in</strong> <strong>de</strong>r Liste gespeichert wer<strong>de</strong>n,<br />

son<strong>de</strong>rn <strong>in</strong> e<strong>in</strong>em separaten Vektor, ist je<strong>de</strong>rzeit e<strong>in</strong>Zugriff auf diese Daten möglich.<br />

Die Daten können also, nach<strong>de</strong>m sie <strong>in</strong> <strong>de</strong>r Liste angezeigt wur<strong>de</strong>n, nachträglich<br />

verän<strong>de</strong>rt wer<strong>de</strong>n. Das Problem ist dabei, dass die Komponenten von <strong>de</strong>r Än<strong>de</strong>rung<br />

nichts erfahren, da e<strong>in</strong> sehr triviales Mo<strong>de</strong>ll, ohne jegliche Vorkehrungen o<strong>de</strong>r<br />

Benachrichtigungen im Fall e<strong>in</strong>er Än<strong>de</strong>rung, durch <strong>de</strong>n Konstruktor verwen<strong>de</strong>t wur<strong>de</strong>.<br />

Darstellung und Auswahl <strong>de</strong>r <strong>in</strong> <strong>de</strong>r Liste enthaltenen Elemente: Die Anzahl <strong>de</strong>r<br />

Elemente, die gleichzeitig angezeigt wer<strong>de</strong>n sollen, kann mit <strong>de</strong>r Metho<strong>de</strong><br />

public void setVisibleRowCount(<strong>in</strong>t setVisibleRowCount)<br />

e<strong>in</strong>gestellt wer<strong>de</strong>n. Die Listenanzeige ist aber völlig von an<strong>de</strong>ren Mechanismen wie<br />

z.B. Bildlauf getrennt, d.h. e<strong>in</strong> Listenfeld führt ke<strong>in</strong>en automatischen Bildlauf durch.<br />

Zur Realisierung e<strong>in</strong>es Bildlaufbereichs muß e<strong>in</strong> JScrollPane-Objekt mit <strong>de</strong>r Liste<br />

als Parameter erzeugt wer<strong>de</strong>n und diese dann anschließend e<strong>in</strong>em Panel<br />

h<strong>in</strong>zugefügt wer<strong>de</strong>n.<br />

Entfernen, Modifizieren von E<strong>in</strong>trägen <strong>in</strong> bzw. aus <strong>de</strong>r Liste: Das Listenobjekt selbst<br />

verfügt über ke<strong>in</strong>e Metho<strong>de</strong>n, die es erlauben, e<strong>in</strong>en neuen E<strong>in</strong>trag <strong>in</strong> die List<br />

e<strong>in</strong>zufügen. Daten wer<strong>de</strong>n nicht <strong>in</strong> die Liste selbst gespeichert, son<strong>de</strong>rn wer<strong>de</strong>n über<br />

e<strong>in</strong>e Mo<strong>de</strong>ll-Schnittstelle ListMo<strong>de</strong>l verwaltet. Das ListMo<strong>de</strong>l besitzt folgen<strong>de</strong><br />

Metho<strong>de</strong>, mit <strong>de</strong>ren Hilfe auf die Daten zugegriffen wer<strong>de</strong>n kann:<br />

public void getElementAt(<strong>in</strong>t <strong>in</strong><strong>de</strong>x)<br />

public <strong>in</strong>t getSize()<br />

Es besteht die Möglichkeit, die Daten<strong>in</strong>halte, statt sie <strong>in</strong> <strong>de</strong>r Liste selbst zu speichern<br />

o<strong>de</strong>r aus e<strong>in</strong>em Vektor zu lesen, mit Hilfe e<strong>in</strong>er Neu<strong>de</strong>f<strong>in</strong>ition von getElementAt()<br />

und getSize() z.B. onl<strong>in</strong>e zu berechnen o<strong>de</strong>r aus e<strong>in</strong>er Datenbank anzufor<strong>de</strong>rn.<br />

Die zur Anzeige benötigten Inhalte wer<strong>de</strong>n dann dynamisch durch die Liste vom<br />

vorhan<strong>de</strong>nen ListMo<strong>de</strong>l über <strong>de</strong>n zugehörigen In<strong>de</strong>x angefor<strong>de</strong>rt.<br />

Mit Hilfe <strong>de</strong>r Metho<strong>de</strong><br />

public void addDataListener(ListDataListener l)<br />

kann e<strong>in</strong> Listener zum Mo<strong>de</strong>ll h<strong>in</strong>zugefügt wer<strong>de</strong>n, <strong>de</strong>r dafür Sorge tragen kann, dass<br />

e<strong>in</strong>e Benachrichtigung <strong>de</strong>r Listener-Komponente stattf<strong>in</strong><strong>de</strong>t, falls e<strong>in</strong> Element<br />

modifiziert wur<strong>de</strong>. Da die Liste nichts über die Elemente, die angezeigt wer<strong>de</strong>n<br />

sollen, weiß, muß für je<strong>de</strong>s Element Breite und Höhe neu berechnet wer<strong>de</strong>n. Mit Hilfe<br />

von<br />

public void setFixedCellHeight(<strong>in</strong>t height)<br />

299 Übergabe beim Erstellen <strong>de</strong>s Elements<br />

386

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!