ein JTree soll einen 2. JTree steuern

Status
Nicht offen für weitere Antworten.

hussi

Mitglied
Hallo zusammen,

Mein Programm sieht bis jetzt so aus: auf meinem Frame sind 2 Trees nun will ich in dem linken Tree auf einen Knoten klicken (der dann auf geht) und dann soll im rechten Tree der Knoten (auf der selben ebene mit dem selben Namen) ebenfalls aufgehen. In den Tree sind die selben Daten enthalten, z.B.: ich öffne in dem linken einen Ordner und im rechten dann eine Kopie davon.

Mein Versuch war bis jetzt so das ich im linkenTree meinen ExpansionListener setze und von die Methode des rechten Tree verwende, aber im rechten Baum rührt sich nix:




Code:
class MyExpansionListener implements TreeExpansionListener{
 
    public void treeCollapsed(TreeExpansionEvent arg0) {
        final MyNode node = (MyNode) arg0.getPath().getLastPathComponent();
        TreePath  treepath= arg0.getPath(); 
        jTreeRechts.collapsePath(treepath);
    } 

    public void treeExpanded(TreeExpansionEvent arg0)
    {
        final MyNode node = (MyNode) arg0.getPath().getLastPathComponent();
        TreePath  treepath= arg0.getPath(); 
        jTreeRechts.expandPath(treepath);
      
    }
    
  }

Kann mir da wer weiter helfen?

Grüße hussi
 

hussi

Mitglied
beide haben das selbe Model

Code:
      jTreeLinks = new JTree();
      jTreeLinks.setCellRenderer(treeRenderer);
      jTreeLinks.addTreeExpansionListener(new DifferExpansionListener());
      jTreeLinks.setModel(new MyTreeModel(rootLinks));
      jScrollPane2.setViewportView(jTreeLinks);
Code:
      jTreeRechts = new JTree();
      jTreeRechts.setCellRenderer(treeRenderer);
      jTreeRechts.setModel(new MyTreeModel(rootRechts));
      jScrollPane1.setViewportView(jTreeRechts);
 

AlArenal

Top Contributor
Falsch!
Deinem Code nach zu urteilen ist weder das Model gleich (du erzeugst jeweils eine neue Instanz), noch die darin befindlichen Daten (du benutzt ja wohl bereits unterscheidliche Root-Nodes).

Demenetsprechend kann es nicht über einen TreePath funktionieren, weil im Model des rechten Trees ganz andere Instanzen verwendet werden als im linken. Das sollte einem aber wie Schuppen aus den Haaren fallen, wenn man weiß wie ein TreePath arbeitet - und das wiederum sollte man wissen, wenn man schon damit arbeitet ;)

Du kannst bestenfalls versuchen wir von hand einen TreePath-Ersatz zu stricken, der seinen Pfad nicht mit Object-Instanzen, sondern mit Indices bildet. Und in dem Fall heißt es: Selbst ist der Programmierer! :)
 

hussi

Mitglied
Ja, hast recht! Habs auch grad bemerkt das ich in einem Path
die Objekte bekomm ich dachte ich bekomm einfach ne
Stringliste mti den Namen der Nodes.

Das sollte einem aber wie Schuppen aus den Haaren fallen,
wenn man weiß wie ein TreePath arbeitet - und das wiederum sollte
man wissen, wenn man schon damit arbeitet

genau wenn man es weiß!!! ;-)

Aber damit geht es ohne es selber zu programmieren.

Code:
 class MyExpansionListener implements TreeExpansionListener{
  
    
    public void treeCollapsed(TreeExpansionEvent arg0) {
        final MyNode node = (MyNode) arg0.getPath().getLastPathComponent();
        jTreeRechts.collapseRow(jTreeLinks.getRowForPath(arg0.getPath()));
      }
  
    public void treeExpanded(TreeExpansionEvent arg0)
    {
      final MyNode node = (MyNode) arg0.getPath().getLastPathComponent();
      jTreeRechts.expandRow(jTreeLinks.getRowForPath(arg0.getPath())); 
    }
    
  }
[/quote]
 

AlArenal

Top Contributor
Damit gehts aber auch nur, wenn der 2. Tree wirklich eine exakte Kopie ist. Wenn der durch den User geändert werden kann und seine Änderungen nicht an den linken propagiert, isses schon wieder essig.
 

hussi

Mitglied
Also das er nur die auf macht die auch gleich sind verhindere ich jetzt hier mit und meine Notes sind sortiert:

Code:
public void treeExpanded(TreeExpansionEvent arg0)
    {
      final MyNode nodeLinks = (MyNode) arg0.getPath().getLastPathComponent();
     
      final MyNode nodeRechts = (MyNode)jTreeRechts.getPathForRow(jTreeLinks.getRowForPath(arg0.getPath())).
            getLastPathComponent();
      if(nodeLinks.toString()==nodeRechts.toString()) {
        jTreeRechts.expandRow(jTreeLinks.getRowForPath(arg0.getPath()));
      }
    }

Siehst du noch gravierende Probleme? Bis jetzt bin ich damit ganz zufrienden. [/code]
 

AlArenal

Top Contributor
Ich kenne den konkreten Anwendungsfall nicht und abgesehen davon, dass dein Code mir in den AUgen weh tut, ist die Hauptsache ja zunächst, dass es überhaupt funktioniert.
 

hussi

Mitglied
Is der Code echt so schlimm?

Kannst mir ein kleines Bespiel geben, wie du ihn schreiben würdest.
Will ja nicht das du dir die Augen kaputt machst. Und lernen will ich ja auch was.
 

AlArenal

Top Contributor
1. Na wenigstens benutzt du fleißig final. Das ist schonmal ein gutes Stilelement, dass man viel zu selten - eigentlich fast nie - zu sehen bekommt.

2. Strings vergleicht man aber nicht mit ==, sondern mit #equals .

3. Bandwurmzeilen mit lauter vielen Punkten sind zu vermeiden.

4. Du könntest dich mal entscheiden, ob du ENTWEDER englische ODER Deutsche Bezeichner und Klassennamen verwendest.

5. Guter Stil ist es auch Parameter als final zu deklarieren. Bei der Gelegenheit kannst du deinen Event auch mal gleich umbenennen. 'e' oder 'evt' oder 'event' böten sich an.

6. Wenn du jTreeLinks.getRowForPath(e.getPath()) in einer lokalen Variable speicherst, kannst du den Code deutlich aufräumen und musst die Methode nur einmal, statt wie jetzt zweimal, aufrufen.

7. Ist der Vergleich zweier Nodes über #toString wirklich narrensicher? Ich vermute, dass #toString hier den angezeigten Text des Nodes liefert und wenn zwei Sachen den gleichen texte haben, müssen sie nicht automatisch dasgleiche bedeuten...

8. Liefert #getRowForPath -1, weil der Node hidden oder nicht vorhanden ist (in dem Fall könnte es auch ne NPE geben, steht aber nicht in der Doku), dann liefert #getPathForRow(-1) null und damit liefert null#getLastPathComponent() eine NPE ....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
G JTree soll nur auf Mausklick reagieren AWT, Swing, JavaFX & SWT 10
FrittenFritze JTree, LazyLoading und "Rückwärtstraversion" AWT, Swing, JavaFX & SWT 3
J Falsches Rendern durch JCheckBox in eigenem JTree AWT, Swing, JavaFX & SWT 6
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
F Jtree aus Klasse mit Arraylisten AWT, Swing, JavaFX & SWT 1
A Swing JList zu JTree AWT, Swing, JavaFX & SWT 11
richis-fragen JTree +/- verschwidet wenn Knoten keine Kinder hat... AWT, Swing, JavaFX & SWT 6
RalleYTN Modaler Dialog und JTree Node mit sehr... seeeeehr vielen Elementen AWT, Swing, JavaFX & SWT 6
Z Swing JTree DefaultMultipleTreeNode Repräsentation ändern AWT, Swing, JavaFX & SWT 1
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
W Swing Anzeigefehler bei JTree AWT, Swing, JavaFX & SWT 1
S JRadioButton und JCheckBox im JTree AWT, Swing, JavaFX & SWT 14
H Swing JTree: Zählt der rootNode mit? AWT, Swing, JavaFX & SWT 2
krgewb Swing JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 4
R JTree behandeln AWT, Swing, JavaFX & SWT 2
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
U dynamisches JTree erstellen AWT, Swing, JavaFX & SWT 2
J JTree updaten AWT, Swing, JavaFX & SWT 2
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
T JTree mit Symbolen? AWT, Swing, JavaFX & SWT 8
R Anfängerfrage: Ansichten des JTree AWT, Swing, JavaFX & SWT 1
H Swing JTree Minimumgröße AWT, Swing, JavaFX & SWT 2
F Swing JTree + DiffUtils // Markierung Nodes aufheben AWT, Swing, JavaFX & SWT 2
I JTree wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Swing JTree AWT, Swing, JavaFX & SWT 4
M Nodes in JTree nicht anzeigen AWT, Swing, JavaFX & SWT 0
T JTree mit Cloud verbinden AWT, Swing, JavaFX & SWT 0
H JTree Probleme AWT, Swing, JavaFX & SWT 9
F Swing Drag and Drop in JTree aus verschiedenen Listen AWT, Swing, JavaFX & SWT 6
M JButton wird von JTree überdeckt AWT, Swing, JavaFX & SWT 4
J Auf Dateien in JTree zugreifen AWT, Swing, JavaFX & SWT 15
F jTree.startEditingAtPath(path); funktioniert nicht bei eigenem CellEditor? AWT, Swing, JavaFX & SWT 8
D Swing JTree Steuerung AWT, Swing, JavaFX & SWT 11
S Swing JTree verwirrt mich AWT, Swing, JavaFX & SWT 2
T JTree - Elemente mit Doppelklick auswählen AWT, Swing, JavaFX & SWT 6
J JTree speichern AWT, Swing, JavaFX & SWT 4
N Swing JTree TreeCellRenderer mit html und automatischen Zeilenumbruch AWT, Swing, JavaFX & SWT 8
O Swing JTree um Label (oder Panel) erweitern AWT, Swing, JavaFX & SWT 9
T JTree, Knoten mehrmals verwenden AWT, Swing, JavaFX & SWT 5
B JTree mit Ordneransicht in JPanel einbinden AWT, Swing, JavaFX & SWT 4
D JTree node reagiert bei Klick nicht immer AWT, Swing, JavaFX & SWT 2
M Swing JTree: Wie kann ich die Hintergrundfarbe der selection ändern?!?! AWT, Swing, JavaFX & SWT 7
D Mehrmals auf Node im JTree klicken AWT, Swing, JavaFX & SWT 2
D JSplitPane, Jtree, CardLayout (constraint must be a string) AWT, Swing, JavaFX & SWT 9
N Swing FileFilter lässt JTree sich nicht öffnen AWT, Swing, JavaFX & SWT 2
X Swing 2 TreeModel und ein JTree synchronisieren AWT, Swing, JavaFX & SWT 3
N Swing JTree TreePath zu Windows Pfad? AWT, Swing, JavaFX & SWT 2
RELAXccc Swing JTree + JScrollPane, refresh Problem AWT, Swing, JavaFX & SWT 17
X Swing JTree aktualisieren AWT, Swing, JavaFX & SWT 2
V Swing JTree - Umbenennen selbst handlen. AWT, Swing, JavaFX & SWT 2
E Übergebenem JTree Blätter hinzufügen AWT, Swing, JavaFX & SWT 2
E Wert eines selektierten Knotens in einem JTree auslesen AWT, Swing, JavaFX & SWT 3
A Swing JTree - Nodes expanden AWT, Swing, JavaFX & SWT 2
D JTree nach Klick auf einen Hyperlink aktualisieren AWT, Swing, JavaFX & SWT 3
B JTree AWT, Swing, JavaFX & SWT 9
T Menüacceleratoren verschwinden bei JTree AWT, Swing, JavaFX & SWT 5
1 Swing JTree collapse child nodes AWT, Swing, JavaFX & SWT 4
B JTree - sehr individuell AWT, Swing, JavaFX & SWT 3
G Swing JTree - Verbindungslinien entfernen AWT, Swing, JavaFX & SWT 4
A Swing Herausfinden ob bei JTree Klick auf "+"/"-" anahnd x,y AWT, Swing, JavaFX & SWT 2
S Swing JTree und seine Listener... AWT, Swing, JavaFX & SWT 4
L Swing JTree wird nicht selektiert AWT, Swing, JavaFX & SWT 2
P [JTree] Markierhilfe der Drop-Location selber gestalten. AWT, Swing, JavaFX & SWT 4
A JTree aus Pfaden erzeugen AWT, Swing, JavaFX & SWT 3
K Swing Hilfe beim JTree! AWT, Swing, JavaFX & SWT 3
X Datensätze in JTree AWT, Swing, JavaFX & SWT 2
L Update JTree Verzeichnisse AWT, Swing, JavaFX & SWT 9
E JTree Auswahl AWT, Swing, JavaFX & SWT 2
K JTree width der Treenodes auf 100% AWT, Swing, JavaFX & SWT 6
C JTree LastSelectedPathComponent benutzen? AWT, Swing, JavaFX & SWT 3
S Swing JTree Node Text nicht richtig angezeigt AWT, Swing, JavaFX & SWT 2
Landei Swing JTree mit "Tabellenzeilen"? AWT, Swing, JavaFX & SWT 5
Rudolf Swing JTree Node anhand vom Namen finden AWT, Swing, JavaFX & SWT 4
S JTree Elemente nach BaumLevel abspeichern AWT, Swing, JavaFX & SWT 2
Z JTree rootChilds AWT, Swing, JavaFX & SWT 2
D JTree DefaultMutableTreeNode ActionPerformed AWT, Swing, JavaFX & SWT 3
T JTree Daten in DB schreiben am besten SQL AWT, Swing, JavaFX & SWT 21
O JTree/TreeModel/DefaultMutableTreeNodes thread safe machen AWT, Swing, JavaFX & SWT 3
J Lazy Loading eine JTree während Scrollen AWT, Swing, JavaFX & SWT 11
S JTree & JComboBox - Elemente übers Fenster hinaus anzeigen AWT, Swing, JavaFX & SWT 9
E Swing JTree AWT, Swing, JavaFX & SWT 2
J Swing Lazy Loading in JTree wenn gescrollt wird AWT, Swing, JavaFX & SWT 3
N Knotenanordnung in JTree AWT, Swing, JavaFX & SWT 4
S JTree mit Liste zur Speicherung AWT, Swing, JavaFX & SWT 3
S Jtree CheckNode mit JPanel AWT, Swing, JavaFX & SWT 32
G JTree entfernt Nodes nicht AWT, Swing, JavaFX & SWT 12
C Swing JTree und TreeModel AWT, Swing, JavaFX & SWT 15
S Swing JTree wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
J JTree AWT, Swing, JavaFX & SWT 2
R [JTree/DefaultTreeCellRenderer] eigenes Renderer-Panel, so breit wie der JTree AWT, Swing, JavaFX & SWT 2
S Swing JTree mit KeyListener AWT, Swing, JavaFX & SWT 2
E Swing JTree setSelectedPath funktioniert nicht?! AWT, Swing, JavaFX & SWT 5
E JTree Autoscroll bei Drag and Drop AWT, Swing, JavaFX & SWT 4
S JTree aus List<File> erstellen AWT, Swing, JavaFX & SWT 8
C Swing MouseEntered(?) für jeden Node im JTree AWT, Swing, JavaFX & SWT 4
M JTree mit eigenen Knoten - Zugriff auf Daten AWT, Swing, JavaFX & SWT 6
C Swing JTree UI Probleme AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben