Da sich das GUI jetzt wie gewünscht verhält, geht es mit der Aufgabe dieses Fensters weiter: Bilder aus einer RSS-Suche bei Flickr anzuzeigen. Allerdings kann man nicht einfach die Suchergebnisse anfordern und annehmen, dass die resultierende XML mit den Java-Basisklassen weiterverarbeitet werden kann. Man könnte es versuchen, aber der Aufwand entspräche in keinem Fall dem Ergebnis.
Zum Glück gibt es zur Bewältigung dieses Problems ein Projekt namens Rome. Wenn man die Rome-Bibliothek herunterlädt, sollte man auf jeden Fall auch JDOM herunterladen.
Wie dieses Beispiel zeigt, besteht der Zweck von Rome darin, schnell und einfach Ergebnisse aus RSS-Feeds zu ziehen. Da das nur geschehen soll, wenn der Anwender auf die Suchtaste drückt, ist der Code, der Rome verwendet, in einem Action-Listener untergebracht.
Der Taste wird nun ein Action-Listener hinzugefügt:
searchBtn.addActionListener(new GridBagAL());
Die listening-Klasse sieht so aus:
Wenn er aufgerufen wird, erzeugt dieser Listener die gewünschte URL, indem er den Text aus dem Textfeld und den gewählten Modus aus der Combobox als URL codiert. Mit Rome wird der Feed dann als SyndFeed-Objekt angelegt. Man setzt einen Vektor ein, um das gewünschte Datum aus dem Feed zu speichern.
Um zu verstehen, warum die Enclosures des Feeds interessant sind, hier ein Blick auf die Quelle eines resultierenden Feeds: http://api.flickr.com/services/feeds/photos_public.gne?tags=dog,cat&tagmode=any&format=rss_200_enc. Wenn lediglich ein Titel für jeden Eintrag auf der JTable und dessen Image-URL im Image-Label erscheinen muss, können diese Informationen leicht aus dem Enclosure gewonnen werden.
Zur Unterstützung bei der Darstellung dieser Informationen wird nun eine Klasse namens FlickrTableEntry geschrieben. In ihr werden Bild-Titel und -URL gespeichert. Der Code ist folgender:
Sobald die Tabellen-Daten gespeichert sind, wird ein weiterer Vektor erzeugt. Er bestimmt die Spaltenbezeichnungen in der Tabelle und aktualisiert die Tabelle, indem er ein neues Tabellen-Modell erzeugt, das die neuen Tabellendaten und Spaltennamen enthält.
Damit der Code kompiliert werden kann, werden die folgenden Include-Elemente benötigt:
Wenn man den bis jetzt vorliegenden Code ausprobiert, sieht man, dass die Tabelle mit Bildernamen von Flickr gefüllt wird. Jetzt muss man nur noch dafür sorgen, dass die Bilder im Image-Label dargestellt werden. Dafür muss man einen ListSelectionListener verwenden. Es wird nun der folgende Code dort hinzugefügt, wo die Tabelle initialisiert wurde.
Auch das folgende Include-Element ist erforderlich:
import javax.swing.event.*;
Nun funktioniert alles wie gewünscht. Wenn man einen Titel aus der Ergebnistabelle auswählt, wird das entsprechende Bild im Image-Label dargestellt.
Neueste Kommentare
Noch keine Kommentare zu Mehr über Gridbag-Layout: RSS-Feeds integrieren
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.