Swing DnD zwischen zwei JTrees

N4pst3r

Mitglied
Hallo,

folgendes Problem an dem ich nun schon Wochen sitze und einfach nicht weiterkomme.
Ich habe zwei JTrees die jeweils eine Drag and Drop Mehtode für sich besitzen. Vorallem wird aber eine Drag and Drop Methode zwischen diesen Bäumen gebraucht.
Ich habe schlichtweg keine Ahnung wie ich das verwirklichen soll... Habe bestimmt schon alle möglichen seiten über drag and drop gelesen, studiert, kopiert und bearbeitet. Aber das Problem kann ich einfach nicht lösen ;(

Meine Bäume sehen identisch aus:
Java:
public class RightFileSystem extends JPanel {

	final JTree tree = new JTree( createTreeModel() );

	public RightFileSystem() {

		tree.setDragEnabled( true );
		tree.setDropMode( DropMode.USE_SELECTION );
		tree.setDropTarget( new DropTarget( tree, TransferHandler.MOVE,
			new DropTargetAdapter() {

				public void drop( DropTargetDropEvent dtdeR ) {

// Der im Tree ausgewählte Node
					TreePath tpSelektierterPfadR = tree.getSelectionPath();
					TreePath tpQuellpfadR = tpSelektierterPfadR.getParentPath();
					DefaultMutableTreeNode dmtAusgewählterNodeR = (DefaultMutableTreeNode) tpSelektierterPfadR.getLastPathComponent();

// Die Koordinaten des "gezogenen" Nodes und der Node, wo dieser hinein soll
					Point pDropLocationR = dtdeR.getLocation();
					TreePath tpZielpfadR = tree.getClosestPathForLocation(
						pDropLocationR.x, pDropLocationR.y );

// Die Eltern-Knoten
					DefaultMutableTreeNode dmtZielParentNodeR = (DefaultMutableTreeNode) tpZielpfadR.getLastPathComponent();
					DefaultMutableTreeNode dmtQuellParentNodeR = (DefaultMutableTreeNode) tpQuellpfadR.getLastPathComponent();

// Die Verschiebung auf der Festplatte
					String sAusgewählterPfadR = ((File) dmtAusgewählterNodeR.getUserObject()).getAbsolutePath();
					String sZielpfadR = ((File) dmtZielParentNodeR.getUserObject()).getAbsolutePath();
					File fQuelleR = new File( sAusgewählterPfadR );
					File fZielR = new File( sZielpfadR );

					boolean verschiebenR = fQuelleR.renameTo( new File( fZielR, fQuelleR.getName() ) );
					if( !verschiebenR ) {
						JOptionPane.showMessageDialog( null, "Die Datei " + fQuelleR
							+ " konnte nicht nach " + fZielR + " verschoben werden.", "Error",
							JOptionPane.ERROR_MESSAGE );
					}
					else {
// Die Verschiebung der Knoten im grafischen Baum
						dmtQuellParentNodeR.remove( dmtAusgewählterNodeR );
						dmtZielParentNodeR.add( dmtAusgewählterNodeR );
						dtdeR.dropComplete( true );

						RightFileSystem rfs = new RightFileSystem();
						LeftFileSystem lfs = new LeftFileSystem();
					}

					tree.updateUI();
					tree.validate();
				}
			}));

		JScrollPane scrollPane = new JScrollPane( tree );

		this.add( scrollPane, BorderLayout.CENTER );
		this.add( GJApp.getStatusArea(), BorderLayout.SOUTH );

		tree.addTreeExpansionListener( new TreeExpansionListener() {

			public void treeCollapsed( TreeExpansionEvent e ) {
			}

			public void treeExpanded( TreeExpansionEvent e ) {
				TreePath path = e.getPath();
				FileNode node = (FileNode) path.getLastPathComponent();

				if( !node.isExplored() ) {
					DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
					node.explore();
					model.nodeStructureChanged( node );
				}
			}
		} );
	}

	private DefaultTreeModel createTreeModel() {
		File root = new File( "C:/" );
		FileNode rootNode = new FileNode( root );

		rootNode.explore();
		return new DefaultTreeModel( rootNode );
	}

	public static void main( String args[] ) {
		RightFileSystem rFS = new RightFileSystem();
	}
}
die Bäume stellen einen Explorer da der die Festplatte von C:/ aus spiegelt.

Ich würde mich über Lösungen (-ansätze) sehr freuen.
Danke
Gruß N4pst3r
 

Marco13

Top Contributor
Nur überflogen, bei sowas ist ein KSKB immer gut, aber... dass da irgendwo mittem im anonymen Listener in einer Klasse sowas steht wie
Code:
                        RightFileSystem rfs = new RightFileSystem();
                        LeftFileSystem lfs = new LeftFileSystem();
(und damit u.U. nochmal so ein GUI-Objekt erstellt wird, in dem nochmal alles liegt, das aber nirgendwo verwendet wird) sieht gelinde gesagt SEHR befremdlich aus...
 

N4pst3r

Mitglied
Ja ich habe meinen Quellcode jetzt nicht komplett überarbeitet. Ich habe ja noch mehr klassen als die Bäume und arbeite auch onch daran
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
M Kommunikation zwischen zwei Stages AWT, Swing, JavaFX & SWT 0
L Wörter zwischen zwei Grenzen einlesen. AWT, Swing, JavaFX & SWT 13
M Schnittpunkte zwischen zwei Graphics2D Elemente ermitteln. AWT, Swing, JavaFX & SWT 5
D Swing Kommunikation zwischen zwei GUI's AWT, Swing, JavaFX & SWT 2
P 2D-Grafik Bogen(Arc) zwischen zwei Punkten zeichnen AWT, Swing, JavaFX & SWT 2
B Vertikale Größenänderung zwischen zwei Widgets AWT, Swing, JavaFX & SWT 2
B Kommunikation zwischen zwei Fenstern und vorübergehende Speicherung der Eingaben AWT, Swing, JavaFX & SWT 4
F Swing Ladebildschirm zwischen zwei SWING Frames AWT, Swing, JavaFX & SWT 11
T JTabbedPane - neuen Tab zwischen zwei anderen Tabs hinzufügen AWT, Swing, JavaFX & SWT 2
A Daten umherschieben zwischen zwei Klassen AWT, Swing, JavaFX & SWT 40
B LayoutManager Positionierung zwischen zwei Layoutkomponenten AWT, Swing, JavaFX & SWT 2
M SWT DND zwischen zwei TreViewern in beide Richtungen AWT, Swing, JavaFX & SWT 10
algorismi Unterscheiden zwischen zwei JLists AWT, Swing, JavaFX & SWT 5
G Variblenwert zwischen zwei Klassen übergeben AWT, Swing, JavaFX & SWT 3
T Kommunikation zwischen Zwei GUI-Klassen AWT, Swing, JavaFX & SWT 2
T Kommunikation zwischen zwei jFrames AWT, Swing, JavaFX & SWT 4
G Datenaustausch zwischen zwei JFrames AWT, Swing, JavaFX & SWT 3
I Drag and Drop zwischen zwei JTables AWT, Swing, JavaFX & SWT 5
A Button zwischen zwei Panels verschieben. AWT, Swing, JavaFX & SWT 6
M JavaFX Abstand zwischen AnchorPane und Labels in dem HBox halten AWT, Swing, JavaFX & SWT 1
U 2dgraphics unterschied zwischen .scale und AffineTransform.getScaleInstance AWT, Swing, JavaFX & SWT 4
S JavaFX Fehler zwischen View und Controller bei MouseEvent (MVC) AWT, Swing, JavaFX & SWT 13
missy72 JavaFX TableView Spalte zwischen den Zeilen AWT, Swing, JavaFX & SWT 5
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
T JavaFX - Datenübergabe zwischen Scenes AWT, Swing, JavaFX & SWT 8
S JavaFX Unterschiede zwischen Scene Builder 2.0 und der ausgeführten App AWT, Swing, JavaFX & SWT 17
Informatiknoob AWT Zahlenraten (eine Zahl zwischen 1 und 10) AWT, Swing, JavaFX & SWT 1
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
P Zwischen verschiedenen Panels wechseln AWT, Swing, JavaFX & SWT 3
O Focus zwischen Chat und Spiel wechselns AWT, Swing, JavaFX & SWT 3
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
Arif AWT Unterschied zwischen RED und red AWT, Swing, JavaFX & SWT 4
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
D Zwischen Null-Layouts wechseln AWT, Swing, JavaFX & SWT 2
K Wie kann ich eine Variable zwischen Tab Klassen weitergeben ? AWT, Swing, JavaFX & SWT 7
S JavaFX (Best Practise) Daten zwischen Controllern austauschen AWT, Swing, JavaFX & SWT 1
P Drag & Drop zwischen Panels AWT, Swing, JavaFX & SWT 0
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
T Swing Kompatibilitätsproblem zwischen Swing und JavaFX AWT, Swing, JavaFX & SWT 4
S Verzögerung zwischen Cursorbewegung einbauen AWT, Swing, JavaFX & SWT 1
3 Swing Vertikaler Separator zwischen JMenu's AWT, Swing, JavaFX & SWT 2
D JGridLayout zwischen Zeilen bestimmter Abstand AWT, Swing, JavaFX & SWT 3
S Unterschied zwischen id und fx:id AWT, Swing, JavaFX & SWT 5
F Swing JAVA GUI Übergabe von Werten zwischen mehreren Fenstern/Klassen AWT, Swing, JavaFX & SWT 10
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2
B Linie zwischen 2 Elementen AWT, Swing, JavaFX & SWT 5
D animierte kameraansicht zwischen gezeichneten objekten AWT, Swing, JavaFX & SWT 4
B Swing JMenu zwischen anderen Componenten AWT, Swing, JavaFX & SWT 4
GUI-Programmer JWindow zwischen den Desktopbild und Dektopverknüpfungen AWT, Swing, JavaFX & SWT 16
Psypsy Swing SwingWorker unterschied zwischen setProgress und process AWT, Swing, JavaFX & SWT 2
propra Schnittpunkt zwischen Objekt und Kante finden AWT, Swing, JavaFX & SWT 24
H Swing Wechsel zwischen Frames AWT, Swing, JavaFX & SWT 6
S Swing Zwischenräume zwischen JPanels AWT, Swing, JavaFX & SWT 4
X zwischen 2 JPanels "elegant" wechseln AWT, Swing, JavaFX & SWT 3
G Unterschiedliche Pfadangabe zu Icons zwischen JApplet und JWindow? AWT, Swing, JavaFX & SWT 2
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
G Swing MigLayout: Lücken zwischen Elementen entfernen AWT, Swing, JavaFX & SWT 2
F Variablen zwischen Frames AWT, Swing, JavaFX & SWT 5
V Swing JLabel zwischen 2 JPanel hin- und herbewegen. AWT, Swing, JavaFX & SWT 12
E Drag&Drop zwischen 2 Listen AWT, Swing, JavaFX & SWT 5
buntuswalus Swing Datentransfer zwischen JPanels AWT, Swing, JavaFX & SWT 18
P Swing Beziehungen zwischen 3 Klassen AWT, Swing, JavaFX & SWT 4
R Swing Kommunikation zwischen Panels AWT, Swing, JavaFX & SWT 2
S Schnittstelle zwischen Haupt und Nebenfenster AWT, Swing, JavaFX & SWT 17
F JCombobox zwischen setEditable true und false switchen AWT, Swing, JavaFX & SWT 2
I Swing JPanel Tab zwischen GUI Elementen AWT, Swing, JavaFX & SWT 6
L Swing Kommunikation zwischen JMenuBar und anderen Componenten AWT, Swing, JavaFX & SWT 2
data89 Verbindungslinien zwischen Formen auf einer "Zeichenfläche" AWT, Swing, JavaFX & SWT 2
DeeDee0815 SWT Text Widget: Zwischen Single und Password umschalten AWT, Swing, JavaFX & SWT 3
J Unterschied zwischen SwingWorker und Threads AWT, Swing, JavaFX & SWT 4
G Gap zwischen JButton-Rand und JButton-Icon verändern AWT, Swing, JavaFX & SWT 2
T GridLayout, zu wenig Platz zwischen Widgets AWT, Swing, JavaFX & SWT 3
S Abstand zwischen Labeln auf 0 setzen AWT, Swing, JavaFX & SWT 6
J Unterschied zwischen nicht-statischen und statischen Klassen AWT, Swing, JavaFX & SWT 5
O Zwischen mehreren Bildern wechseln AWT, Swing, JavaFX & SWT 6
T JTextField, der nur Werte zwischen 100 und 1000 zulässt AWT, Swing, JavaFX & SWT 28
M Linie zwischen JComponents AWT, Swing, JavaFX & SWT 5
G Abstand zwischen den Buttons in einer Toolbar AWT, Swing, JavaFX & SWT 3
G Drag&Drop zwischen JTables AWT, Swing, JavaFX & SWT 2
P Unterscheiden zwischen Mautasten-Druck? AWT, Swing, JavaFX & SWT 3
B Abstand zwischen einzelnen Elementen einstellen AWT, Swing, JavaFX & SWT 2
N JTable Abstand zwischen einzelnen Spalten AWT, Swing, JavaFX & SWT 6
K JFreeChart: Platz zwischen Balken AWT, Swing, JavaFX & SWT 3
G Zwischen Panels in einem JFrame wechseln AWT, Swing, JavaFX & SWT 4
M Unterschied zwischen paintComponent() und paint()? AWT, Swing, JavaFX & SWT 4
R Navigieren zwischen mehreren Fenstern AWT, Swing, JavaFX & SWT 7
F Wie gebe ich Parameter zwischen Actions weiter? AWT, Swing, JavaFX & SWT 2
K abstände zwischen Panels? AWT, Swing, JavaFX & SWT 3
M Freiraum zwischen Knoten im JTree AWT, Swing, JavaFX & SWT 14
M Parameterübergabe zwischen Frames AWT, Swing, JavaFX & SWT 2
P in JFrame zwischen verschiedenen JPanels wechseln AWT, Swing, JavaFX & SWT 7
M Breite veraendern zwischen 2 JPanels AWT, Swing, JavaFX & SWT 2
J Separator zwischen den einzelnen Symbolen in der Toolbar AWT, Swing, JavaFX & SWT 4
G abstand zwischen den buttons unterschiedlich AWT, Swing, JavaFX & SWT 2
S Wechsel zwischen JFrame und JDialog durch Benutzerauswahl AWT, Swing, JavaFX & SWT 2
Z komponenten "einfrieren" - abstand zwischen AWT, Swing, JavaFX & SWT 10
G Ungewollter Abstand zwischen Gui -Elementen / Insets setzen AWT, Swing, JavaFX & SWT 2
G BoxLayout: Abstand zwischen vertikalen Komponenten! AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben