Drag and Drop von JTree auf JPanel

Status
Nicht offen für weitere Antworten.

DeepBlue

Aktives Mitglied
Hio

Ich hab mal eine wieder eine Stelle, an der ich nicht weiterkomme und ich hoffe, dass mir einer helfen kann.
Ich habe einen JTree mit einem TreeModel in dem eigene Objekte sind. Diese Objekte besitzen ein Interface, dass beschreibt wie diese gezeichnet werden können. Nun möchte ich mittels Drag und Drop diese Objekte aus dem JTree auf ein JPanel droppen lassen und sie genau da zeichnen lassen, wo sie gedroppt wurden. Bzw möchte ich, dass sie einem Vector hinzugefügt werden, der alle zu zeichnenden Objekte enthält.

Mein Problem ist nun, dass ich nicht genau weiß, was ich für die Drag und Drop Lösung alles einbinden muss. Ich habe nun mehrere TuTs darüber gelesen, die mir insgesamt aber nur bedingt weiterhelfen konnten. Sicherlich müssen meine Objekte noch das Interface "Transferable" implementieren, oder ? Zudem brauch ich einen TransferHandler, den ich bei meiner JPanel anmelde. Beim Jtree muss ich meines Wissen ja nichts verändern sondern nur mittels setDragEnabled(true) das Default Drag und Drop Verhalten einschalten.
Soweit ist mir jetzt alles klar, nur wie bekomme ich z.B. die Koordinaten des Objekts wenn ich es auf das JPanel droppe ? Und wann welchen Listener muss ich nutzen um Aktionen auszuführen sobald das Drag und Drop erfolgreich beendet ist ?

mfg DeeP
 

André Uhres

Top Contributor
> Zudem brauch ich einen TransferHandler, den ich bei meiner JPanel anmelde. .

Beim JPanel könnte man auch einfach ein DropTarget setzen.
Die Koordinaten stehen in der Methode "drop(DropTargetDropEvent dtde)" zur Verfügung: "dtde.getLocation()".
Das zu übertragende Objekt wird durch "dtde.getTransferable().getTransferData(...)" geliefert.
Das eigentliche "Droppen" dürfte dann kein Problem mehr sein.
Hier ein Beispiel für "stringFlavor":
Code:
        final JPanel targetPanel = new JPanel();
        targetPanel.setDropTarget(new DropTarget(targetPanel, new DropTargetAdapter() {
            public void drop(DropTargetDropEvent dtde) {
                Point loc = dtde.getLocation();
                Object obj = null;
                try {
                    obj = dtde.getTransferable().getTransferData(DataFlavor.stringFlavor);
                } catch (IOException ex) {
                    ex.printStackTrace();
                } catch (UnsupportedFlavorException ex) {
                    ex.printStackTrace();
                }
                JLabel comp = new JLabel((String)obj);
                targetPanel.setLayout(null);
                targetPanel.add(comp);
                comp.setLocation(loc);
                comp.setSize(100,20);
            }
        }));
 

André Uhres

Top Contributor
Möglicherweise muss für JTree ein TransferHandler geschrieben werden
der über die Methode "createTransferable(...)" das zu übertragende Objekt weitergibt.
 

DeepBlue

Aktives Mitglied
Wow, besten Dank, das werde ich mal ausprobieren. Ist wesentlich einfacher als meine Idee. Allerdings werde ich mir dann noch nen eigenen Flavor definieren müssen, weil ich ja mit eigenen Objekten arbeite. Aber da wäre ich ja so oder so sicherlich nicht drumherum gekommen.

Andre_Uhres hat gesagt.:
Möglicherweise muss für JTree ein TransferHandler geschrieben werden
der über die Methode "createTransferable(...)" das zu übertragende Objekt weitergibt.

Oder ich implementiere bei meinen Objekten das Interface Transferable. Das sollte auch genügen, oder ?

mfg DeeP
 
G

Guest

Gast
> Allerdings werde ich mir dann noch nen eigenen Flavor definieren müssen
Für de Hausgebrauch könntest du auch einfach in der Methode "canImport(...)" vom TransferHandler
immer "true" zurückgeben, unabhängig vom Flavor. Dann spielt es keine Rolle, mit welchem Flavor du arbeitest.

> Oder ich implementiere bei meinen Objekten das Interface Transferable.
Das musst du sowieso machen, da die drag-and-drop API nur ein Transferable weitergeben kann.
 

DeepBlue

Aktives Mitglied
Besten Dank für deine Hilfe, hat alles geklappt. Für den JTree habe ich einen TransferHandler geschrieben, der die Methoden canImport() (immer false), createTransferable() und getSourceActions überschreibt. Für die Objekte, die Transportiert werden, habe ich einen eigenen Flavor definiert und meine Objekte implementieren nun das Transferable Interface.

Vielen Dank nochmal :)
 

DeepBlue

Aktives Mitglied
Ich muss den Thread nochmal aus der Versenkung holen, weil nochmal ein kleines Problem aufgetaucht ist. Ich würde gerne darauf reagieren, wenn ich etwas aus meinem Tree dragge und noch nicht gedroppt habe.
Es soll nämlich so sein, dass wenn ich etwas dragge, auf meinem JPanel verschiedene grafische Objekte gehighlighted werden sollen, wenn ich mit einem Element darüber dragge. Ein MouseMotionListener bzw public void mouseDragged reagiert leider nicht.

Hat da vielleicht noch irgendjemand ne Idee ?
 

DeepBlue

Aktives Mitglied
Okay, hat sich erledigt, hatte wohl Tomaten auf den Augen ... Die Methode public void dragOver(DropTargetDragEvent) des DropTargetListeners reagiert auf das draggen über dem Panel.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
F Swing Drag and Drop in JTree aus verschiedenen Listen AWT, Swing, JavaFX & SWT 6
E JTree Autoscroll bei Drag and Drop AWT, Swing, JavaFX & SWT 4
C Drag an Drop vom JTree zur JTable AWT, Swing, JavaFX & SWT 4
G Drag and Drop JTree to Canvas AWT, Swing, JavaFX & SWT 7
E Drag & Drop von jTree in JList AWT, Swing, JavaFX & SWT 5
G JTree Node ggf. aufklappen bei Drag & Drop? AWT, Swing, JavaFX & SWT 7
F JTree - Drag and Drop AWT, Swing, JavaFX & SWT 2
D JTree Drag and Drop / drop - Probleme AWT, Swing, JavaFX & SWT 4
G Drag&Drop (JTree) AWT, Swing, JavaFX & SWT 2
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
AmsananKING ListView Drag And Drop AWT, Swing, JavaFX & SWT 0
AmsananKING Drag And Drop Filenames Inside A Listview AWT, Swing, JavaFX & SWT 1
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
M Polygon per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 26
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
N Drag and Drop Fenster AWT, Swing, JavaFX & SWT 11
F Drag&Drop mit Transparenter Farbe bei PNG AWT, Swing, JavaFX & SWT 0
D JavaFX Pane per Drag&Drop bewegen? AWT, Swing, JavaFX & SWT 2
L JavaFX Drag and Drop funktioniert nicht AWT, Swing, JavaFX & SWT 3
J Drag and Drop von eigenen Objekten AWT, Swing, JavaFX & SWT 3
J Drag and Drop eines Buttons AWT, Swing, JavaFX & SWT 0
T Swing Drag and Drop für JComponents AWT, Swing, JavaFX & SWT 1
F Drag und Drop AWT, Swing, JavaFX & SWT 0
L JavaFX JavaFX Chart Drag and Drop AWT, Swing, JavaFX & SWT 3
D JavaFX Drag&Drop mehrerer TreeViews oder TableViews AWT, Swing, JavaFX & SWT 1
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
U Drag and Drop mit imageview AWT, Swing, JavaFX & SWT 0
U Drag and Drop imageviews AWT, Swing, JavaFX & SWT 8
D SteelSeries in Netbeans als Drag-and-Drop einbinden AWT, Swing, JavaFX & SWT 0
C JTable Drag and Drop von Zeilen innerhalb einer Table AWT, Swing, JavaFX & SWT 2
S Swing Update eine JTabelle nach einer Drag&Drop Operation AWT, Swing, JavaFX & SWT 0
S Swing Suche Drag & Drop Beispiele AWT, Swing, JavaFX & SWT 1
A Drag and Drop mit JAVAFX- Scenebuilder AWT, Swing, JavaFX & SWT 1
R Performance Drag and Drop & Timer AWT, Swing, JavaFX & SWT 3
R Drag and Drop Problem auf Jpanel AWT, Swing, JavaFX & SWT 2
N Swing JTable und Drag und Drop AWT, Swing, JavaFX & SWT 2
A Drag and Drop eigener Objekte AWT, Swing, JavaFX & SWT 7
C Drag and Drop (inventar) AWT, Swing, JavaFX & SWT 15
T Swing JButton per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 5
Iron Monkey JFileChooser - Drag and Drop AWT, Swing, JavaFX & SWT 5
Iron Monkey Nach Drag & Drop die Datei auf Komponent darstellen AWT, Swing, JavaFX & SWT 2
M AWT Drag n Drop-Support für Component AWT, Swing, JavaFX & SWT 5
HaukeG Swing Drag & Drop in verschiedenen Varianten AWT, Swing, JavaFX & SWT 4
S Swing Drag&Drop mit TransferHandler und JPanels AWT, Swing, JavaFX & SWT 8
C Swing Simulation von Drag and Drop Events AWT, Swing, JavaFX & SWT 3
H Swing "Drag and Drop" eines JComponent über ein JPanel AWT, Swing, JavaFX & SWT 2
R Drag 'n Drop AWT, Swing, JavaFX & SWT 3
S Selektion bei Drag&Drop AWT, Swing, JavaFX & SWT 4
C Swing Drag and Drop mit Objekten in einem Fenster. AWT, Swing, JavaFX & SWT 9
T SWT Drag&Drop: Eclipse FileTransfer mit Icons AWT, Swing, JavaFX & SWT 14
F Drag & Drop durch Verbindungslinien AWT, Swing, JavaFX & SWT 10
T Swing Drag and Drop - JLabels tauschen statt überschreiben AWT, Swing, JavaFX & SWT 11
S Drag and Drop über 2 Panels AWT, Swing, JavaFX & SWT 2
K JButtons innerhalb eines JPanels verschieben (DRAG&DROP) AWT, Swing, JavaFX & SWT 5
B Drag and Drop AWT, Swing, JavaFX & SWT 6
K Drag and Drop Workbench AWT, Swing, JavaFX & SWT 2
P SWT Eclipse Draw2D Drag and Drop (ruckelt) AWT, Swing, JavaFX & SWT 4
F SWT Drag and Drop im TreeViewer AWT, Swing, JavaFX & SWT 4
B Swing Drag&Drop mit Feedback (Image am Mauszeiger) AWT, Swing, JavaFX & SWT 7
Spin JFrame/ Frame Drag and Drop AWT, Swing, JavaFX & SWT 13
A TransferHandler & Drag n' Drop AWT, Swing, JavaFX & SWT 2
R Drag an Drop JTable Zelle AWT, Swing, JavaFX & SWT 6
D Drag & Drop - node.isRoot AWT, Swing, JavaFX & SWT 3
E Swing Drag n Drop Verschieben von Labels o.ä. AWT, Swing, JavaFX & SWT 10
E Swing Beim Drag & Drop, Drag verbieten?! AWT, Swing, JavaFX & SWT 2
F Swing Problem mit Drag&Drop in JTable AWT, Swing, JavaFX & SWT 4
C keine weiteren Events während Drag&Drop Operation möglich? AWT, Swing, JavaFX & SWT 5
E Drag&Drop zwischen 2 Listen AWT, Swing, JavaFX & SWT 5
0 Swing Drag n' Drop Bug wenn Source und Target gleiche Komponente? AWT, Swing, JavaFX & SWT 4
C Drag and Drop JPanel auf JPanel nach drop erneut verschieben? AWT, Swing, JavaFX & SWT 3
M Swing JTable Drag'n'Drop von Dateien AWT, Swing, JavaFX & SWT 3
M Drag and Drop: Quellfenster AWT, Swing, JavaFX & SWT 2
M Buttons per Drag & Drop im GridBagLayout verschieben AWT, Swing, JavaFX & SWT 6
M Swing JList > Drag & Drop AWT, Swing, JavaFX & SWT 2
Z Drag and Drop auf Application AWT, Swing, JavaFX & SWT 3
H Drag&Drop von JComponents AWT, Swing, JavaFX & SWT 6
G JTable drag and drop AWT, Swing, JavaFX & SWT 4
H Drag&Drop mit GWT AWT, Swing, JavaFX & SWT 8
B Swing Drag&Drop einzelner Zellen in einer JTable AWT, Swing, JavaFX & SWT 12
A Swing Drag and Drop TreeNode User Object AWT, Swing, JavaFX & SWT 3
P JList: Reihenfolge der Elemente per Drag'n'Drop ändern. AWT, Swing, JavaFX & SWT 9
K Swing Wie ändere ich die default action für Drag&Drop AWT, Swing, JavaFX & SWT 6
R JLayeredPane - Drag&Drop - mouseDragged AWT, Swing, JavaFX & SWT 6
C JTable mit RowSorter und Drag & Drop: Zeile verschieben AWT, Swing, JavaFX & SWT 4
V SWT TreeViewer Drag'n'Drop LocalSelectionTransfer AWT, Swing, JavaFX & SWT 10
R Swing JLayeredPane - Drag&Drop Positionen vertauschen AWT, Swing, JavaFX & SWT 3
F Drag & Drop mit eigenen Komponenten AWT, Swing, JavaFX & SWT 2
B SWT - Drag & Drop innerhalb einer Table AWT, Swing, JavaFX & SWT 3
S Drag'n'Drop AWT, Swing, JavaFX & SWT 8
E Drag&Drop JTable; Renderer füllt alle Zellen AWT, Swing, JavaFX & SWT 10
M Drag & Drop in Swing (createTransferable) AWT, Swing, JavaFX & SWT 6
T Drag Quelle beim Drop AWT, Swing, JavaFX & SWT 6
A Drag & Drop von Zeilen innerhalb einer Tabelle AWT, Swing, JavaFX & SWT 2
P Dateien per Drag&Drop ins Java-Fenster ziehen AWT, Swing, JavaFX & SWT 8
J Drag'n Drop imm selben Frame unterbinden AWT, Swing, JavaFX & SWT 3
S Table Row per Drag and Drop in andere Table schieben? AWT, Swing, JavaFX & SWT 14
X wiedermal Drag n Drop AWT, Swing, JavaFX & SWT 2
P Drag & Drop AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben