Swing-Bäume leicht gemacht

Wie konnte hier der Zen-Ansatz helfen? In diesem Zusammenhang soll als Erstes das DefaultTreeModel näher untersucht werden. Das DefaultTreeModel dient derzeit zur Verwaltung der Ereignisse bei der Aktualisierung des Jtree. Das DefaultTreeModel ist eine Implementierung der TreeModel-Schnittstelle. Wer schon einmal mit der Tabellen-Komponente Jtable gearbeitet hat, weiß, dass diese ein DefaultTableModel enthält, welches das AbstractTableModel erweitert, das wiederum die TableModel-Schnittstelle implementiert. Das AbstractTableModel enthält alle Methoden, die zur Benachrichtigung einer Jtable bezüglich dynamischer Änderungen in der Tabelle erforderlich sind, wobei das DefaultTableModel diese Methoden verwendet. Wer sein eigenes TableModel schreibt, muss also das AbstractTableModel erweitern. Wendet man nun diese Logik auf den Baum an, gilt es, ein AbstractTreeModel zu ergänzen.

Das Problem dabei ist, dass es in Swing kein AbstractTreeModel gibt. Die einzige Definition für das Generieren von TreeModelEvents und ihren Versand an den Baum ist im DefaultTreeModel verkapselt. Obwohl es hierfür keinen konkreten Grund gibt, erschwert dieser Umstand das Erstellen eines neuen Modells doch erheblich. Aber es gibt bereits bestehende Implementierungen, die dieses Problem aufgreifen: Hier wird die allgemein zugängliche Version von Christian Kaufhold verwendet, die das Auslösen der Ereignisse mit praktischen Zusatzfunktionen implementiert.

Jetzt gilt es genauer zu untersuchen, was in Hinblick auf das TreeModel im Einzelnen implementiert werden muss. Die Jtree-Komponente verwendet ein Root-„Objekt“ zur Verankerung in dem Modell, das sie mit getRoot findet. Anschließend navigiert sie mithilfe von nur vier Methoden – getChild(), getChildCount(), getIndexOfChild() und isLeaf() – durch den Baum.

Jeder dieser Aufrufe verwendet Objekt-Klassen als Parameter und gibt Werte aus, die auf die Knoten des Baums verweisen. Dies ist ein ganz wichtiger Punkt: Auch wenn man vielleicht erwarten könnte, dass der Baum eine Implementierung der TreeNode-Schnittstelle durch die Konten-Objekte verlangt: dem ist nicht so. Sie können beim Schreiben eines eigenen TreeModel jedes beliebige Objekt benutzen, da die Schnittstelle nicht erkennt, welche Informationen ein Knoten über sich selbst bereitstellen muss.

An dieser Stelle ein Beispielcode: Link zur Zip-Datei

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

2 Tagen ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

2 Tagen ago

Netzwerk-Portfolio für das KI-Zeitalter

Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…

2 Tagen ago

Internet-Tempo in Deutschland: Viel Luft nach oben

Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.

2 Tagen ago

Erste Entwickler-Preview von Android 16 verfügbar

Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…

2 Tagen ago

Kaspersky warnt vor Cyberangriff auf PyPI-Lieferkette

Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.

3 Tagen ago