Swing Drag and Drop - JLabels tauschen statt überschreiben

Taino

Mitglied
Hallo,

ich habe das Problem, dass ich beim DnD die Werte zweier JLabels tauschen möchte.
Sprich: Ziehe ich X auf Y, soll danach Y den Wert von X haben und X den von Y.
Im Moment ist es so, dass danach zwar X den Wert von Y hat, aber Y dann immer noch den Wert von Y, anstatt den Wert von X zu erhalten.

Wie kann man das ändern?
 

Taino

Mitglied
Java:
JLabel label = new JLabel();
  label.setTransferHandler(new TransferHandler("text"));
  label.addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
      JComponent c = (JComponent)e.getSource();
      TransferHandler th = c.getTransferHandler();
      th.exportAsDrag(c, e, TransferHandler.COPY);
    }
  });

Ich habe hier ein MouseEvent im internet gefunden. Dies funktioniert auch wie es soll. nur kopiert es das Feld und ersetzt das alte. nun brauch ich aber wenigstens den inhalt des alten felds um diesen in das dragsource feld einzufügen.
Muss ich dazu noch ein MouseEvent schreiben? oder kann man das iwie in das Event integrieren?!
ein Beispiel-Code wäre sehr hilfreich.
Danke
 

Jigga

Bekanntes Mitglied
hab mich mit solchen sachen noch nicht so viel beschäftigt.aber rein logik halber:
musst du nicht neben Drag auch ein Drop definieren?ausserdem bräuchtest du evtl eine dummy variable die zum kopieren herhält.
kopiere A nach B mit Dummy D:
D = A;
A = B;
B = D;
 

Taino

Mitglied
Ja das Problem dabei ist, dass JLabel von sich aus kein DnD unterstüzt. So muss man das mit dieser Methode erweitern. Nur ist jetzt mein Problem dass ich nicht an A dran komme bzw nicht weiß wie ich es machen könnte. Wenn ich A hätte wäre es ja kein Problem ;-)


*Edit*
Oder hat jemand eine Möglichkeit, das Ganze mit JTextfield zu realisieren?
 
Zuletzt bearbeitet:

Jigga

Bekanntes Mitglied
du musst deinen labels jeweils eine droptarget mothode zuweisen.in diese wird dann einfach die kopieranweisung durchgeführt:
Java:
DropTarget target = new DropTarget(label, new DropTargetAdapter() {
		
			public void drop(DropTargetDropEvent dtde) {
					dtde.acceptDrop(dtde.getDropAction());
				//hier dann die kopier anweisung
					
				}
		
			}
		
		});

EDIT bezüglich JTextFields: Was genau ist denn dein Ziel?Darstellung zweier Strings und das vertauschen dieser mittels DnD?
 

Taino

Mitglied
Ja die Strings sollen einfach nur vertauscht werden. nur dass ich die einzelnen Felder nicht einzeln ansprechen kann, da diese dynamisch erstellt werden und alle gleich heißen.

So habe mal versucht den Labels ein DropTarget hinzu zufügen. Nur komm ich immernoch nicht an mein dropLabel. Ich bekomme ein DropTarget zurück wenn ich die Methode .getSource() anwende. Und auf JLabel kann ich das nicht casten. Oder kann man auch anders den Inhalt auslesen?!
oder wie meintest du das?
 

Jigga

Bekanntes Mitglied
achso,dann ist dein eigentliches Problem ja einfach nur der Zugang zu den Komponenten. Wie genau erzeugst du dir denn diese?
 

Taino

Mitglied
[Java]
for (int i = 0; i <= ArrayLaenge; i++) {
JLabel label = new JLabel();
label.setSize(x,y);
//wird dynamisch hochgezählt
label.setLocation(x,y);
}
[/Java]
 

Jigga

Bekanntes Mitglied
du könntest eine globale Variable nutzen und diese in deinem TransferHandler mit deinem "c" füllen:

Java:
private JLabel dummy;
.
.
.
label.addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
      JComponent c = (JComponent)e.getSource();
      dummy = (JLabel) c;
      TransferHandler th = c.getTransferHandler();
      th.exportAsDrag(c, e, TransferHandler.COPY);
    }
  });

dann könntest du zumindest schon mal auf das Source label zugreifen. Jetzt musst du noch irgendwie an die Ziel-Komponente kommen. Das kann man bestimmt irgendwie im DropTarget machen.
 

Taino

Mitglied
Na das Drop funktioniert ja, das Sourcelabel habe ich ja schon, mir fehlt halt das Target letztlich.

Die Frage ist jetzt halt WIE man das irgendwie im DropTarget machen kann, sodass ich an die Ziel-Komponente komm ;)
 

Jigga

Bekanntes Mitglied
Achso,dann habe das verwechselt :)
versuchs mal hiermit
Java:
JLabel la  = (JLabel) dtde.getDropTargetContext().getComponent();

EDIT: hm ist jetzt die Frage,ob dann bei
Java:
la.setText();
deine eigentliche Komponente oder diese abngeändert wird,evtl dann sofort
Java:
(JLabel) dtde.getDropTargetContext().getComponent().setText();
aufrufen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
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
F Swing Drag and Drop in JTree aus verschiedenen Listen AWT, Swing, JavaFX & SWT 6
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
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
E JTree Autoscroll bei Drag and Drop AWT, Swing, JavaFX & SWT 4
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
C Drag an Drop vom JTree zur JTable AWT, Swing, JavaFX & SWT 4
Z Drag and Drop auf Application AWT, Swing, JavaFX & SWT 3
G Drag and Drop JTree to Canvas AWT, Swing, JavaFX & SWT 7
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
E Drag & Drop von jTree in JList AWT, Swing, JavaFX & SWT 5
P Dateien per Drag&Drop ins Java-Fenster ziehen AWT, Swing, JavaFX & SWT 8
G JTree Node ggf. aufklappen bei Drag & Drop? AWT, Swing, JavaFX & SWT 7
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
X Drag and Drop AWT, Swing, JavaFX & SWT 2
F Drag&Drop Jlist -> JList AWT, Swing, JavaFX & SWT 3
G Drag and Drop mal wieder? AWT, Swing, JavaFX & SWT 2
G Drag And Drop von Component (List, Tree) zum Desktop AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben