[applet][swing]drag and drop

drag and drop [applet][swing] - Java - Programmation

Marsh Posté le 10-05-2005 à 16:08:31    

Salut a tous,
 
Je fait une interface graphique de jeu d echecs, et maintenant j essaye d y ajouter les fonctionnalites drag and drop...Pour l instant j en suis arrive a un stade ou le dnd marche bien mais pas excatement comme je le voudrait!
En fait par analogie avec le Clipboard et les fonctionnalites /copier/couper/coller, je voudrais qu une fois que j ai drager et dropper ma piece celle ci n apparaisse plus sur sa case d origine mais juste sur sa case d arrive, en gros faire un couper /coller de la piece or pour l instant y a que le copier coller qui marche....
Le code est assez experimental (vu que je debute) mais toute explication est bonne a prendre
 
merci

Code :
  1. public class CaseView extends JLabel {
  2.      
  3.     CaseView(boolean b, int i, int j) {
  4.      
  5. //constructeur qui cree les cases de l echiquier  
  6.         this.setSize(10,10);
  7.        if (b ) { 
  8.           this.setOpaque(true);
  9.           this.setBackground(Color.white);
  10.          this.setTransferHandler(new TransferHandler("icon" ));
  11.          MouseListener listener = new DragMouseAdapter();
  12.         this.addMouseListener(listener);
  13.          
  14.        } else {
  15.           this.setOpaque(true);
  16.           this.setBackground(Color.blue); 
  17.           this.setTransferHandler(new TransferHandler("icon" ));
  18.          MouseListener listener = new DragMouseAdapter();
  19.         this.addMouseListener(listener);
  20.        }
  21. //dans cette partie on ajoute les pieces sur chaque case de depart du jeu
  22.       switch(i) {
  23.        
  24.          
  25.           case 1:
  26.             if (j ==1){ this.setIcon(tourn);}
  27.             if (j ==2){ this.setIcon(cavaln);}
  28.             if (j ==3){ this.setIcon(foun);}
  29.             if (j ==4){ this.setIcon(damen);}
  30.             if (j ==5){ this.setIcon(roin);}
  31.             if (j ==6){ this.setIcon(foun);}
  32.             if (j ==7){ this.setIcon(cavaln);}
  33.        
  34.             if (j ==8){ this.setIcon(tourn);}
  35.           break;
  36.           case 2:this.setIcon(pionn);
  37.      
  38.           break;
  39.           case 7 :this.setIcon(pion);
  40.      
  41.          
  42.           break;
  43.           case 8:
  44.           if (j ==1){ this.setIcon(tour); }
  45.           if (j ==2){ this.setIcon(caval);}
  46.           if (j ==3){ this.setIcon(fou);}
  47.           if (j ==4){ this.setIcon(dame);}
  48.           if (j ==5){ this.setIcon(roi);}
  49.           if (j ==6){ this.setIcon(fou);}
  50.           if (j ==7){ this.setIcon(caval);}
  51.           if (j ==8){ this.setIcon(tour);
  52.    }
  53.            
  54.             break;
  55.            
  56.         }
  57. }
  58. private class DragMouseAdapter extends MouseAdapter {
  59.         public void mousePressed(MouseEvent e) {
  60.            
  61.             JComponent c = (JComponent)e.getSource();
  62.             TransferHandler handler = c.getTransferHandler();
  63.             handler.exportAsDrag(c, e, TransferHandler.MOVE);
  64.            // ici si je change MOVE par COPY le dnd est bien activee
  65.            // et fonctionne mais fait des copie/colle....
  66.          
  67.         }
  68.     }
  69. }

Reply

Marsh Posté le 10-05-2005 à 16:08:31   

Reply

Marsh Posté le 12-05-2005 à 20:02:40    

Personne a d idee?
Sinon si kk un a des liens interessant sur le drag and drop en java je suis preneur aussi :)

Reply

Marsh Posté le 13-05-2005 à 15:30:46    

Regarde ici :
http://www.javaworld.com/javaworld [...] ndrop.html
 
J'ai réalisé le Drag and Drop d'un String (et bientot d'un JTree) grace à leurs explications. Tu devrais t'en sortir avec ca ;) (le lien semble down actuellement mais c obligé qu'il reviendra)
 
Bon chance...
 
Edit : Tu verras que c'est bien plus compliqué que ce que tu fais... Apres si ton truc marche pk pas mais bon j'ai des doutes...


Message édité par Loizo le 13-05-2005 à 15:31:34
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed