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.
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