Bonjour,
J'ai récupéré un code sur Internet, je l'ai modifié un peu pour avoir ce que je recherche (suis débutant): pouvoir échanger entre deux Jboutons dans un JPanel, càd, je voudrais glisser un bouton A de sa place et le déposer à la place de l'autre, B. Une fois c'est fait, le bouton B prend la place de A, etc. Un simple échange de places.
Voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.dnd.*;
 
import javax.swing.JFrame;
 
public class DragDropBis 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);
    }
 
    @SuppressWarnings("deprecation")
	public static void main(String[] arg) {
        Button buttonSource = new Button("A");
        Button buttonTarget = new Button("B");
 
        JFrame frame = new JFrame("test");
        frame.setLayout(new FlowLayout());
        frame.add(buttonSource);
        frame.add(buttonTarget);
 
        DragDropBis dndListener = new DragDropBis();
 
        @SuppressWarnings("unused")
		DropTarget dropTarget = new DropTarget(frame, DnDConstants.ACTION_MOVE, dndListener);
 
        @SuppressWarnings("unused")
		DropTarget dropSource = new DropTarget(frame, DnDConstants.ACTION_MOVE, dndListener);
 
        DragSource dragSource = new DragSource();
        DragSource dragTarget = new DragSource();
 
        @SuppressWarnings("unused")
		DragGestureRecognizer dragRecognizer1 = dragSource.createDefaultDragGestureRecognizer(buttonSource, DnDConstants.ACTION_MOVE, dndListener);
        @SuppressWarnings("unused")
		DragGestureRecognizer dragRecognizer2 = dragTarget.createDefaultDragGestureRecognizer(buttonTarget, DnDConstants.ACTION_MOVE, dndListener);
 
 
        frame.setBounds(0, 100, 400, 100);
        frame.show();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
}

Problème 1: J'arrive à déplacer le bouton A mais pour le B ça ne marche pas.
Problème 2: Comment récupérer, à chaque fois que je déplace un bouton, l'ordre de ces boutons? càd, par exemple:
"L'ordre actuel est: bouton B ensuite bouton A".


Merci pour votre aide!

M.