Drag and Drop de plusieurs images - Java - Programmation
MarshPosté le 23-11-2008 à 14:22:12
Bonjour,
J'aimerais bien créer une interface graphiques pour poser des images en drag and drop dans mon application. J'ai fait un exemple avec une seul image,comment je peux le faire avec plusieurs images par exemples sur le même classe ? vous avez une idée ? une astuce ?
public class MonAppl extends JFrame implements MouseMotionListener{ JLabel[] label = new JLabel[100]; //Copies de l'image JPanel p ;//notre panel principal qui contient les images int nbCopie=0; //nombre de copies existantes
public MonAppl(){//constructeur qui créé la fenetre principale super("titre" ); p = new JPanel(null); createCopy(); //on ajoute une copie au panel this.getContentPane().add(p); this.setSize(800,600); this.setVisible(true); }
public static void main(String[] args) { new MonAppl(); }
public void createCopy(){// créé une nouvelle copie de l'image label[nbCopie]=new JLabel(new ImageIcon("logo.png" )); //initialise l'image label[nbCopie].setBounds(0,0,120,160); // initialise sa position aux coordonnéees 0,0 label[nbCopie].addMouseMotionListener(this);//ajoute un mousemotionlistener pour détecter le drag n drop p.add(label[nbCopie]);//on ajoute la copie au panel p.repaint();//on redessine le panel nbCopie++; //incrémente le nombre de copies existantes }
public void mouseDragged(MouseEvent e) { //lorsque qu'on fais du drag n drop sur une copie
//si la derniere copie créé a été bougée (coordonnées 0,0), //on en créé une nouvelle qui sert de modele if (label[nbCopie-1].getX() != 0 && label[nbCopie-1].getY()!=0) createCopy();
JLabel temp=(JLabel)e.getSource(); //créé une référence vers la copie sur laquelle on a cliqué
temp.setBounds(temp.getX()+e.getX()-60,temp.getY()+e.getY()-80,120,160); //déplace la copie sur laquelle je fais du drag n drop }
Marsh Posté le 23-11-2008 à 14:22:12
Bonjour,
J'aimerais bien créer une interface graphiques pour poser des images en drag and drop dans mon application.
J'ai fait un exemple avec une seul image,comment je peux le faire avec plusieurs images par exemples sur le même classe ? vous avez une idée ? une astuce ?
Voici le code de l'exemple que j'ai :
import java.awt.Event;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
public class MonAppl extends JFrame implements MouseMotionListener{
JLabel[] label = new JLabel[100]; //Copies de l'image
JPanel p ;//notre panel principal qui contient les images
int nbCopie=0; //nombre de copies existantes
public MonAppl(){//constructeur qui créé la fenetre principale
super("titre" );
p = new JPanel(null);
createCopy(); //on ajoute une copie au panel
this.getContentPane().add(p);
this.setSize(800,600);
this.setVisible(true);
}
public static void main(String[] args) {
new MonAppl();
}
public void createCopy(){// créé une nouvelle copie de l'image
label[nbCopie]=new JLabel(new ImageIcon("logo.png" ));
//initialise l'image
label[nbCopie].setBounds(0,0,120,160); // initialise sa position aux coordonnéees 0,0
label[nbCopie].addMouseMotionListener(this);//ajoute un mousemotionlistener pour détecter le drag n drop
p.add(label[nbCopie]);//on ajoute la copie au panel
p.repaint();//on redessine le panel
nbCopie++; //incrémente le nombre de copies existantes
}
public void mouseDragged(MouseEvent e) {
//lorsque qu'on fais du drag n drop sur une copie
//si la derniere copie créé a été bougée (coordonnées 0,0),
//on en créé une nouvelle qui sert de modele
if (label[nbCopie-1].getX() != 0 && label[nbCopie-1].getY()!=0) createCopy();
JLabel temp=(JLabel)e.getSource();
//créé une référence vers la copie sur laquelle on a cliqué
temp.setBounds(temp.getX()+e.getX()-60,temp.getY()+e.getY()-80,120,160);
//déplace la copie sur laquelle je fais du drag n drop
}
public void mouseMoved(MouseEvent e) {
}
}
Merci d'avance.