Drag and Drop in Java (Label aus Text + Icon)

prong

Grünschnabel
Hallo zusammen,

habe folgendes Problem:
Ein JLabel mit Text und Icon soll von einem Fenster in ein anderes gezogen werden. Dabei soll sowohl der Text, als auch das Icon kopiert werden.
Leider kann ich immer nur eins von beiden kopieren. Beide zusammen wollen nicht funktionieren.
Hier der Source-Code zum Label:
public void addKompo(String name, int count) {
labelPos();

JLabel c = new JLabel(name);

MouseListener listener = new DragMouseAdapter();

ImageIcon icon = ladeIcon("pfeil.gif", "Quelle");

linksPanel.add(c);
c.setIcon(icon);

c.addMouseListener(listener);

// Schreibe ich hier "icon" wird das icon kopiert.
c.setTransferHandler(new TransferHandler("text"));



int hoehe = 25;
hoehe = (count * hoehe) + 10;
c.setBounds(15, hoehe, 150, 50);

linksPanel.add(c);

}

Hier die Klasse MouseAdapter:
public class DragMouseAdapter extends MouseAdapter {

public void mousePressed(MouseEvent e) {

JComponent c = (JComponent) e.getSource();
TransferHandler handler = c.getTransferHandler();
handler.exportAsDrag(c, e, TransferHandler.COPY);

}
}

Wie kann ich beides gleichzeitig kopieren?

Danke und Gruß

Marco
 
Original geschrieben von prong
Hallo zusammen,

habe folgendes Problem:
Ein JLabel mit Text und Icon soll von einem Fenster in ein anderes gezogen werden. Dabei soll sowohl der Text, als auch das Icon kopiert werden.
Leider kann ich immer nur eins von beiden kopieren. Beide zusammen wollen nicht funktionieren.
Hier der Source-Code zum Label:
public void addKompo(String name, int count) {
labelPos();

JLabel c = new JLabel(name);

MouseListener listener = new DragMouseAdapter();

ImageIcon icon = ladeIcon("pfeil.gif", "Quelle");

linksPanel.add(c);
c.setIcon(icon);

c.addMouseListener(listener);

// Schreibe ich hier "icon" wird das icon kopiert.
c.setTransferHandler(new TransferHandler("text"));



int hoehe = 25;
hoehe = (count * hoehe) + 10;
c.setBounds(15, hoehe, 150, 50);

linksPanel.add(c);

}

Hier die Klasse MouseAdapter:
public class DragMouseAdapter extends MouseAdapter {

public void mousePressed(MouseEvent e) {

JComponent c = (JComponent) e.getSource();
TransferHandler handler = c.getTransferHandler();
handler.exportAsDrag(c, e, TransferHandler.COPY);

}
}

Wie kann ich beides gleichzeitig kopieren?

Danke und Gruß

Marco

Hm, TransferHandler scheint neu zu sein, in der API zum JDK1.3.1 gibt es die Klasse gar nicht.
Kannst Du nicht das ganze Label übergeben, also nicht nur Icon oder Text?
 
Würde ich ja gerne, aber leider wird es nicht unterstützt, oder ich finde die richtige Property nicht.
Es muss doch ne Lösung geben oder?
Bei Sun steht zwar, man könnte sich seine eigenen Componenten basteln, die dann via drag and drop übergeben werden, doch irgendwie verstehe ich das ganze nicht...

HILFE
 
Zurück