JTree - Brett vor'm Kopp

Status
Nicht offen für weitere Antworten.

SamHotte

Top Contributor
Hi,

ich stell' mich grad ziemlich dämlich an beim Versuch, eine vernünftige Hierarchie für folgendes zu finden:
1. ich benötige verschiedene Baumstrukturen, die ich allesamt grafisch darstellen möchte (mit eigenen JTrees, die verschiedene Renderer etc. bekommen) und die ein eigenes TreeModel bekommen.
2. diese Bäume sollen aber ein paar gemeinsame Attribute haben, daher benötige ich eine abstrakte Oberklasse. Auch möchte ich hier eine Methode "alle Baumknoten expandieren" implementieren, da ich die mehrfach benötige.
3. die Bäume sollen über ein jeweils typisiertes Interface angesprochen werden, damit ich Zugriff auf die Felder habe.

Wie mache ich das? Baue ich drei Interfaces, die voneinander erben, sowie drei Klassen, die diese implementieren und ihrerseits voneinander erben?
 

MPW

Top Contributor
Joa offensichtlich scheint das Brett doch nicht so gross zu sein, ich hab dich nicht genau verstanden, aber deine Vorschlaege sehen doch schon ganz gut aus.

Du musst quasi Interfaces nehmen, da die extends ja schon von TreeModel belegt ist, somit sollte das klar sein. Was mir nicht klar ist, warum willst du gleich drei Interfaces haben, eines, was dann von den drei Modellen implementiert wird, sollte doch vollkommen reichen.
 

SamHotte

Top Contributor
Ne, reicht leider nicht - ich brauche jeweils Zugriff auf die verschiedenen Felder (und möchte nicht immer den Umweg über (Meintyp)getUserObject() gehen müssen), daher habe ich die eigentlichen Daten mit in die Nodes eingebaut. Also ist die vorgesehene Hierarchie:

- Abstrakter Oberknoten (mit Methode zum expandieren des gesamten Baumes, mit getParent(), getChildren() etc.)
- zwei davon erbende Knoten, in denen jeweils die Getter und Setter für die Datenfelder stehen

Wenn ich den Oberknoten weglasse, muss ich jedes der grundlegenden GUI-Elemente (wie z.B. ein JPanel, in dem ein JTree in einem JScrollPane liegt und wo darüber die Anzahl der Knoten angezeigt wird) für jeden dieser Bäume separat bauen; ich hoffe aber, dass ich den nun nur für den Oberknoten machen muss.

Edit: Rechtschreibfehler wech (hoffentlich)
 

Bleiglanz

Gesperrter Benutzer
warum machst du nicht

Basis extends TreeModel

A extends Basis
B extends Basis
C extends Basis
 

SamHotte

Top Contributor
Mach' ich ja. Aber ich möchte jetzt die Dinger auch noch über Interfaces ansprechen, also brauche ich doch für A, B, C auch noch eins, oder?
 

Bleiglanz

Gesperrter Benutzer
ist doch ganz egal ob das Interfaces oder Klassen sind?

wenn ich
Code:
class Basis extends TreeModel
class A extends Basis
habe, und keinerlei Veranlassung besteht, A weiter zu abstrahieren: warum sollte ich dann
Code:
interface IASpezial ...
class A extends Basis implements IASpezial
auch noch einziehen? Damit die Anwendung super-hyper-generisch wird und ich gaaaaaaaaaaanz vieeeeeele Dateien herumwirbeln muss?

Wenn es eh nur ein Dingsbums gibt mit den Eigenschaften von A, dann reicht die Klasse :)
 

AlArenal

Top Contributor
Ist ein wenig wie mit der Datenbank-Normalisierung: Wenn mans übertreibt, macht man es sich ganz sicher nicht einfacher...
 

SamHotte

Top Contributor
Stimmt eigentlich. Ist 'ne Übertreibung des Grundsatzes "gegen Interfaces programmieren", wenn es nur je eine Klasse dazu gibt, richtig? Manchmal denke ich zu kompliziert ... Danke für die Tipps!
 

AlArenal

Top Contributor
SamHotte hat gesagt.:
Stimmt eigentlich. Ist 'ne Übertreibung des Grundsatzes "gegen Interfaces programmieren", wenn es nur je eine Klasse dazu gibt, richtig? Manchmal denke ich zu kompliziert ... Danke für die Tipps!

Zumal du ja Eclipse benutzt. Wenn du später mal das Ganze aufbohrst und dann vielleicht Interfaces brauchst, kannste das immernoch über die Refactoring-Funktionen extrahieren und den Sourcecode von Eclipse entsprechend ändern lassen.
 

Bleiglanz

Gesperrter Benutzer
SamHotte hat gesagt.:
Stimmt eigentlich. Ist 'ne Übertreibung des Grundsatzes "gegen Interfaces programmieren", wenn es nur je eine Klasse dazu gibt, richtig? Manchmal denke ich zu kompliziert ... Danke für die Tipps!

jep

interfaces haben nämlich auch Nachteile...
 

SamHotte

Top Contributor
Sorry, aber: doch. Die extenden nämlich TreeModel, was ein Interface ist ...

Edit: Ups, zu schnell. Da ist natürlich ein fieser Syntaxfehler drin ...
 

SamHotte

Top Contributor
Bleiglanz hat gesagt.:
warum machst du nicht

Basis extends TreeModel

A extends Basis
B extends Basis
C extends Basis

muss eigentlich heißen
Code:
interface Basis extends TreeModel

interface A extends Basis
interface B extends Basis
interface C extends Basis
 

Bleiglanz

Gesperrter Benutzer
warum nicht?
Code:
class Basis extends TreeModel

class A extends Basis
class B extends Basis
class C extends Basis
 
R

Roar

Gast
Bleiglanz hat gesagt.:
warum nicht?
Code:
class Basis extends TreeModel

class A extends Basis
class B extends Basis
class C extends Basis
weil TreeModel ein interface ist, deshalb ging man wohl davon aus, dass Basis auch ein interface sein sollte ;)
 

Bleiglanz

Gesperrter Benutzer
genau! mein Hirn!!

ich dachte an

Code:
class Basis extends DefaultTreeModel

class A extends Basis
class B extends Basis
class C extends Basis

als "schnellste" Lösung
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Bananabert Swing jtree : image als user object Allgemeine Java-Themen 2
F JTree: Nodes dynamisch anlegen via LinkedHashMap Allgemeine Java-Themen 2
E Swing Jtree Allgemeine Java-Themen 9
R JTree - Mehrere Roots Allgemeine Java-Themen 6
DStrohma Icons in JTree Nodes weiter nach rechts rücken Allgemeine Java-Themen 2
M JTree aktualisieren nach Mausklick Allgemeine Java-Themen 12
DStrohma Jede node in JTree mit eigenem Icon Allgemeine Java-Themen 7
Benji0815 Verzeichnis wie im Windows Explorer in einem JTree anzeigen Allgemeine Java-Themen 6
S JAVA JTree rekursiv umschreiben Allgemeine Java-Themen 5
S Suche im JTree nach Neuaufbau Allgemeine Java-Themen 4
N JTree nicht genutzte Pfade schließen Allgemeine Java-Themen 2
G JTree Node löschen Allgemeine Java-Themen 2
G JTree Node verschieben Allgemeine Java-Themen 2
MQue leerer JTree Allgemeine Java-Themen 6
MQue JTree Allgemeine Java-Themen 6
MQue JCheckBox in JTree Allgemeine Java-Themen 2
F JTree in Jsp Allgemeine Java-Themen 2
T Äquivalent zu JTree Allgemeine Java-Themen 4
C JTree: ActionListener auf die Nodes Allgemeine Java-Themen 3
M JTree mit Rechtsklick markieren Allgemeine Java-Themen 4
C JTree: Nodes automatisch öffnen Allgemeine Java-Themen 2
P JTree/ Nodes einfügen Allgemeine Java-Themen 2
P JTree Allgemeine Java-Themen 6
P aus JTree eine XML- Datei Allgemeine Java-Themen 6
P Vector auf JTree Allgemeine Java-Themen 6
P JTree Farbe Allgemeine Java-Themen 14
S JTree selektion erkennen und drauf reagieren Allgemeine Java-Themen 2
E JTree (schonwieder) - TreeCellEditor Allgemeine Java-Themen 9
E JTree - einzelnes Element (Knoten) editieren Allgemeine Java-Themen 2
E JTree - Selektieren mit Rechtsklick Allgemeine Java-Themen 15
P JTree ID vergeben Allgemeine Java-Themen 3
P JTree Allgemeine Java-Themen 4
P JTree/ JTabbedPane Allgemeine Java-Themen 34
L JTree Allgemeine Java-Themen 23
E root JTree Allgemeine Java-Themen 2
E Child in JTree hinzufügen Allgemeine Java-Themen 4
E JTree in NetBeans Allgemeine Java-Themen 2
R Objekt an Knoten von JTree anhaengen Allgemeine Java-Themen 2
R Daten aus Baum entsprechend in jTree einfuegen Allgemeine Java-Themen 2
T Jtree zu langsam beim klappen Allgemeine Java-Themen 8
G Baumhierarchie in JTree eintragen Allgemeine Java-Themen 4
K JTree - Knoten expandieren Allgemeine Java-Themen 4
K JTree Inhalt löschen und Anzeige aktualisieren Allgemeine Java-Themen 13
G JTree automatisch sortieren lassen Allgemeine Java-Themen 5
Luma Diskettenlaufwerk rattert los bei Eintrag in JTree Allgemeine Java-Themen 6
G in Jtree suchen Allgemeine Java-Themen 2
K JTree plus eigener FileLoader Allgemeine Java-Themen 2
H Wie stellt ein JTree fest, wo etwas eingehängt werden soll? Allgemeine Java-Themen 2
temi Einfaches Eventhandling führt zu Brett vor Kopf Allgemeine Java-Themen 2
S StackOverflowError - Brett vor'm Kopf Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben