Hi,
Drag and Drop (DnD) heb ik werkend. Echter de weergave tijdens een Drag bevalt mij niet. Ik heb een ToolBar en een Pane. Vanaf de ToolBar worden verschillende symbolen naar een Pane gesleept.
De ToolBar bestaat uit extended JLabel's die dus dragable zijn.
Tijdens een Drag veranderd de muiscursor in een Copy cursur (vergelijkbaar als je in MS Verkenner, bestanden van directory a naar directory b sleept).
Omdat ik te maken heb met symbolen is het handig een figuur bij het Draggen te zien. Bijvoorkeur een gif bestand.
Heeft iemand hier ervaring mee? In mijn DragGestructureListener inner-klasse staat nu de volgende code:
Heeft iemand mijn wensen al eens voor elkaar gekregen? Of gaat dit niet werken onder Windows clients? Sourcode is altijd welkom!
Drag and Drop (DnD) heb ik werkend. Echter de weergave tijdens een Drag bevalt mij niet. Ik heb een ToolBar en een Pane. Vanaf de ToolBar worden verschillende symbolen naar een Pane gesleept.
De ToolBar bestaat uit extended JLabel's die dus dragable zijn.
Tijdens een Drag veranderd de muiscursor in een Copy cursur (vergelijkbaar als je in MS Verkenner, bestanden van directory a naar directory b sleept).
Omdat ik te maken heb met symbolen is het handig een figuur bij het Draggen te zien. Bijvoorkeur een gif bestand.
Heeft iemand hier ervaring mee? In mijn DragGestructureListener inner-klasse staat nu de volgende code:
Java:
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
| public void dragGestureRecognized(DragGestureEvent e) { // Controleren of de gewenste actie wel geoorloofd is. if((e.getDragAction() & DnDAction) == 0) return; // Aangeven wat er transferable is. TaskCell taskCell = new TaskCell("Task"); ConnectionSet cs = new ConnectionSet(); Map attributes = new Hashtable(); // Bounds zijn 0,0 zodat drop wordt uitgevoerd op plek van cursor attributes.put(taskCell, createBounds(0,0, Color.black)); // Een port voor verbindingen aanmaken. taskCell.add(new DefaultPort("Taak/Center")); // De in te voegen cellen Object[] cells = new Object[] {taskCell}; Rectangle bounds = new Rectangle(new Dimension(0,0)); // Trasferable initialiseren Transferable transferable = new GraphTransferable(cells, cs, attributes, bounds); // Drag gedrag try { dragImage = createImage(20,20); //@todo nog doen dragImage.getGraphics(); if (DragSource.isDragImageSupported()){ // cursor, image, point, transferrable, dsource listener System.out.println("Supported"); // Niet bij (sommige?) Win32 platformen. e.startDrag(DragSource.DefaultCopyDrop, dragImage, imageOffset, transferable, dsListener); } else dragSource.startDrag(e, DragSource.DefaultCopyDrop, transferable, dsListener); } catch( InvalidDnDOperationException idoe ) { // Niets doen } } } |
Heeft iemand mijn wensen al eens voor elkaar gekregen? Of gaat dit niet werken onder Windows clients? Sourcode is altijd welkom!