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
|
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Test2 extends JFrame implements MouseMotionListener{
JLabel[] label = new JLabel[100]; //Copies de l'image
JPanel p ;//notre panel principal qui contient les images
JLabel selected = null;
int nbCopie=0; //nombre de copies existantes
public Test2(){//constructeur qui créé la fenetre principale
super("drag and drop");
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 Test2();
}
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 pa nel
nbCopie++; //incrémente le nombre de copies existantes
label[nbCopie]=new JLabel(new ImageIcon("image.gif"));
//initialise l'image
label[nbCopie].setBounds(60,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
}
private JTextField champDeTexte;
void DialogueEtiquette(String titre) {
JButton bouton = new JButton("OK");
bouton.addActionListener((ActionListener) this);
champDeTexte = new JTextField(20);
champDeTexte.addActionListener((ActionListener) this);
JPanel panneau = new JPanel();
panneau.add(bouton);
getContentPane().add(new JLabel("Donnez l'étiquette"), BorderLayout.NORTH);
getContentPane().add(champDeTexte, BorderLayout.CENTER);
getContentPane().add(panneau, BorderLayout.SOUTH);
pack();
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit()
.getScreenSize();
setLocation((screenSize.width-getSize().width)/2,(screenSize.height-getSize().height)/2);
setVisible(true);
}
public void mousePressed(MouseEvent e){
if (e.getSource() instanceof JLabel)
selected = (JLabel) e.getSource();
selected.setBorder(BorderFactory.createLineBorder(Color.blue, 2));// effet de sélection
}
public void keyPressed(KeyEvent event){
int keyCode = event.getKeyCode();
if (keyCode == event.VK_DELETE){
if (selected != null){
p.remove(selected);
// ne pas oublier d'enlever la référence dans le tableau
// ne pas oublier d'enlever la référence dans le tableau
// ne pas oublier d'enlever la référence dans le tableau
// sans quoi, le garbage collector ne pourra pas libérer les ressources.
}
}
}
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) {
try {}
catch(Exception err) {
System.out.println("Erreur" + err);};
}} |
Partager