ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
844
844
EMPFEHLEN
-
01.04.10 01:14 #1
- Registriert seit
- Mar 2010
- Beiträge
- 10
Hallo,
Mit folgendem Code mache ich 2 JFrames und versuche 1 JButton zu kopieren:
Aber irgendwie wird meine Komponente immer verschoben von Frame zu Frame, ansttatt zu Kopieren.
Hat "DnDConstants.ACTION_COPY" in diesem Fall überhaupt eine wirkung?
Danke.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
package Draganddrop; import java.awt.*; import java.awt.datatransfer.*; import java.awt.dnd.*; import javax.swing.*; import java.awt.event.*; public class DragDrop implements DragGestureListener, DragSourceListener, DropTargetListener, Transferable { static final DataFlavor[] supportedFlavors = {null}; static { try { supportedFlavors[0] = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType); } catch (Exception ex) { ex.printStackTrace(); } } Object object; // Transferable methods. public Object getTransferData(DataFlavor flavor) { if (flavor.isMimeTypeEqual (DataFlavor.javaJVMLocalObjectMimeType)) { return object; } else { return null; } } public DataFlavor[] getTransferDataFlavors() { return supportedFlavors; } public boolean isDataFlavorSupported(DataFlavor flavor) { return flavor.isMimeTypeEqual (DataFlavor.javaJVMLocalObjectMimeType); } // DragGestureListener method. public void dragGestureRecognized(DragGestureEvent ev) { ev.startDrag(null, this, this); } // DragSourceListener methods. public void dragDropEnd(DragSourceDropEvent ev) { } public void dragEnter(DragSourceDragEvent ev) { } public void dragExit(DragSourceEvent ev) { } public void dragOver(DragSourceDragEvent ev) { object = ev.getSource(); } public void dropActionChanged(DragSourceDragEvent ev) { } // DropTargetListener methods. public void dragEnter(DropTargetDragEvent ev) { } public void dragExit(DropTargetEvent ev) { } public void dragOver(DropTargetDragEvent ev) { dropTargetDrag(ev); } public void dropActionChanged(DropTargetDragEvent ev) { dropTargetDrag(ev); } void dropTargetDrag(DropTargetDragEvent ev) { ev.acceptDrag(ev.getDropAction()); } public void drop(DropTargetDropEvent ev) { ev.acceptDrop(ev.getDropAction()); try { Object target = ev.getSource(); Object source = ev.getTransferable().getTransferData (supportedFlavors[0]); Component component = ((DragSourceContext) source).getComponent(); Container oldContainer = component.getParent(); Container container = (Container) ((DropTarget) target).getComponent(); container.add(component); oldContainer.validate(); oldContainer.repaint(); container.validate(); container.repaint(); } catch (Exception ex) { ex.printStackTrace(); } ev.dropComplete(true); } public static void main(String[] arg) { JButton button = new JButton("Drag this button"); JFrame source = new JFrame("Source Frame"); source.setLayout(new FlowLayout()); source.add(button); JFrame target = new JFrame("Target Frame"); target.setLayout(new FlowLayout()); DragDrop dndListener = new DragDrop(); DragSource dragSource = new DragSource(); DropTarget dropTarget1 = new DropTarget(source, DnDConstants.ACTION_COPY, dndListener); DropTarget dropTarget2 = new DropTarget(target, DnDConstants.ACTION_COPY, dndListener); DragGestureRecognizer dragRecognizer1 = dragSource. createDefaultDragGestureRecognizer(button, DnDConstants.ACTION_COPY, dndListener); source.setBounds(0, 200, 200, 200); target.setBounds(220, 200, 200, 200); source.pack(); source.setVisible(true); target.pack(); target.setVisible(true); } }
-
Hallo,
diese Konstante hat damit nichts zu tun, die Logik musst du selbst implementieren.
Gruß
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
01.04.10 11:55 #3
- Registriert seit
- Mar 2010
- Beiträge
- 10
Hallo,
Danke für die rasche Antwort. Kannst du mir vielleicht verraten, wo in dem Code die alte Komponente entfernt wird?
Bzw. wo ich diese copy paste logik selber entwerfen kann?
-
Du entfernst sie weil du die Component einem anderen Container zuweist.
Du müsstest den Button kopieren, also einen neuen Button anlegen mit den gleichen Einstellungen.
Gruß
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
Ähnliche Themen
-
Drag 'n' Drop mit JS
Von ts230 im Forum Javascript & AjaxAntworten: 23Letzter Beitrag: 26.08.08, 10:23 -
Drag`n Drop
Von Lehmkuhler im Forum Flash PlattformAntworten: 11Letzter Beitrag: 06.02.07, 16:58 -
SWT: Ghosted Drag-Image bei Drag & Drop
Von snake_plissken im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 15.04.06, 23:36 -
Drag & Drop von Componenten
Von Przemek im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 16.01.04, 12:42 -
Drag&Drop
Von meierle im Forum HTML-EditorenAntworten: 4Letzter Beitrag: 10.05.01, 12:25





Zitieren

Login





