Witam,
jak przenieść komponenty między kontenerami, np. chwytam sobie cały JLabel i przenosze do innego komponentu.
Aktualnie moge przenosic tylko tekst i nie moge wykminić jak zrobić cały komponent.
JPanel left = new JPanel();
JPanel right = new JPanel();
JLabel b1 = new JLabel("Label");
...
left.add(b1);
//kod przenoszenia - Drag
b1.setTransferHandler(new TransferHandler("text")); //tu sie ustawia property które ma sie przenieść
b1.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {}
public void mousePressed(MouseEvent e) {
JComponent c = (JComponent) e.getSource();
TransferHandler handler = c.getTransferHandler();
handler.exportAsDrag(c, e, TransferHandler.COPY);
}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
});
// Drop
right.setDropTarget(new DropTarget(right,new DropTargetListener(){
public void dragEnter(DropTargetDragEvent dtde) {
System.out.println("DragEnter");
}
public void dragOver(DropTargetDragEvent dtde) {
System.out.println("DragOver");
}
public void dropActionChanged(DropTargetDragEvent dtde) {
System.out.println("Change");
}
public void dragExit(DropTargetEvent dte) {
System.out.println("DragExit");
}
public void drop(DropTargetDropEvent dtde) {
System.out.println("Drop");
System.out.println(dtde.getCurrentDataFlavors()[0]);
}
}));
Jak sie odpali i przeniesie System.out.println(dtde.getCurrentDataFlavors()[0]); zwraca namiary że przenoszony jest string czyli tekst Labela.
Jak zrobić by cały komponent przenosiło?