Java: Wie programmgesteuert mehrere Knoten in einem JTree auswählen und erweitern?

9

Ich habe eine JTree und eine awt.Canvas . Wenn ich mehrere Objekte aus der Canvas in die objList auswähle, möchte ich, dass alle ausgewählten Objekte innerhalb der ausgewählten JTree angezeigt werden. Das bedeutet zum Beispiel, wenn ich 2 Objekte ausgewählt habe, sollten beide ihre Pfade zu root erweitert werden, und auch für jedes ausgewählte Objekt sollte die entsprechende TreeNode ausgewählt sein. Mein JTree hat TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION .

Hier ist ein Beispiel für die Erweiterungsfunktion, die ich verwende:

%Vor%

In meinem aktuellen Zustand, wenn ich ein einzelnes Objekt auswähle, wird es in JTree ausgewählt und sein TreePath wird angezeigt. Aber wenn entities mehr als 1 Objekt ausgewählt hat, wird nichts angezeigt, mein JTree bleibt unverändert.

    
Pantaziu Cristian 20.04.2012, 08:40
quelle

1 Antwort

15

Sie suchen nach dem TreeSelectionModel des JTree (benutzen Sie den Getter). Verwenden Sie die TreeSelectionModel#setSelectionPaths für mehrere Pfade. Jetzt stellen Sie nur einen Knoten ein, der aufgrund Ihres Aufrufs tree.setSelectionPath(tpath); ausgewählt wurde. Das TreeSelectionModel verfügt auch über Methoden zum Hinzufügen / Entfernen zu einer vorhandenen Auswahl, ... (im Grunde alles, was Sie in Zukunft brauchen könnten).

Eine interessante Methode für die Erweiterung ist die % Methode co_de% , mit der JTree#setExpandsSelectedPaths so konfiguriert werden kann, dass ausgewählte Pfade automatisch erweitert werden. Wenn Sie dies manuell verwalten möchten, können Sie die JTree Methode

    
Robin 20.04.2012, 09:15
quelle

Tags und Links