J
jaydee
Gast
Hey Javaforum,
ich denke mein Titel beschreibt schon ganz gut was ich vorhabe... Ich habe einen eigenen Datentyp "Item", der im Grunde nicht mehr ist, als ein JLabel:
Hat halt ein paar zusätzliche Eigenschaften und Methoden.
Diese Items werden alle in einem Panel angezeigt, von welchem ich sie auf ein anderes JLabel ziehen können möchte.
Im Ziel-JLabel möchte ich dann gerne eine Referenz auf das gezogene Objekt, also das Item an sich bekommen.
Bisher ist mein Ansatz das hier.. aber ich weiß nicht, wie ich weiter komme:
im Item:
und fürs Ziellabel:
Wahrscheinlich ist das der falsche Ansatz!? Könnt ihr mir helfen???
freundliche Grüße
jD
ich denke mein Titel beschreibt schon ganz gut was ich vorhabe... Ich habe einen eigenen Datentyp "Item", der im Grunde nicht mehr ist, als ein JLabel:
Code:
public class Item extends JLabel {}
Diese Items werden alle in einem Panel angezeigt, von welchem ich sie auf ein anderes JLabel ziehen können möchte.
Im Ziel-JLabel möchte ich dann gerne eine Referenz auf das gezogene Objekt, also das Item an sich bekommen.
Bisher ist mein Ansatz das hier.. aber ich weiß nicht, wie ich weiter komme:
im Item:
Code:
setTransferHandler(new TransferHandler("name")); // der Name würde mir auch reichen, aber das ganze Item wär noch schöner.
addMouseListener( new MLis() );
private class MLis extends MouseAdapter
{
public void mousePressed( MouseEvent e )
{
TakeableItem c = (TakeableItem)e.getSource();
TransferHandler handler = c.getTransferHandler();
handler.exportAsDrag(c, e, TransferHandler.COPY);
}
}
/* Das ist ziemlich 1:1 aus dem bekannten Drag n Drop Beispiel
von den Java Tutorials: "Adding DnD to JLabel".. weil ich leider noch
nicht durch blicke.*/
und fürs Ziellabel:
Code:
DropTarget dt = new DropTarget();
try{ dt.addDropTargetListener( new DTLis() ); }
catch( tooManyListenersException e ){}
sceneLabel.setDropTarget( dt ); // Das sceneLabel ist das Ziellabel
private class DTLis extends DropTargetAdapter
{
public void drop(DropTargetDropEvent de ) {
if( de.getSource() instanceof TakeableItem )
{
// ... geht aber nicht.
}
}
}
Wahrscheinlich ist das der falsche Ansatz!? Könnt ihr mir helfen???
freundliche Grüße
jD