nasriOM
Messages postés8Date d'inscriptionmardi 30 octobre 2007StatutMembreDernière intervention10 décembre 2007
-
6 nov. 2007 à 16:54
nasriOM
Messages postés8Date d'inscriptionmardi 30 octobre 2007StatutMembreDernière intervention10 décembre 2007
-
14 nov. 2007 à 17:00
Je suis en train de programmer un petit logiciel et je bloque sur certain point.
Mon logiciel sera un logiciel de dessin, je fais du drag and drop
d'élèments et j'aimerai pouvoir les supprimmer avec la touche Suppr
mais je n'arrive pas à créer la méthode.
Sauriez vous comment je pourrais gerer les évenements du clique de la
souris et du clavier. j'aimerai que en cliquant une fois sur une image
on puisse la selectionné puis en tapant sur la touche
suppr(keyEvent.VK_DELETE) quelle se supprime.
publicclass Test2 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 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);
}
publicstaticvoid main(String[] args){
new Test2();
}
publicvoid 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);
publicvoid 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
}
the_wwt
Messages postés177Date d'inscriptionjeudi 5 octobre 2006StatutMembreDernière intervention16 janvier 20091 7 nov. 2007 à 16:51
Bonjour,
quiite à balancer du code... Je me suis amusé un peu ( sachant que ce n'est sans doute pas la bonne solution, mais ça peut t'aider).
Cordialement,
Pierrick
public class TestMe extends JFrame implements KeyListener, MouseListener,
MouseMotionListener {
private static final long serialVersionUID = 1L;
private List<JLabel> selection = new ArrayList<JLabel>();
private Random random = new Random();
private ImageIcon icon = new ImageIcon("logo.gif");
private JPanel p;
public TestMe() {
super("D`N`D");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(800, 600);
this.addKeyListener(this);
this.addMouseListener(this);
p = new JPanel(null);
for (int i = 0; i < 100; i++)
createCopyAleatory();
this.getContentPane().add(p);
Dimension screenSize = java.awt.Toolkit.getDefaultToolkit()
.getScreenSize();
the_wwt
Messages postés177Date d'inscriptionjeudi 5 octobre 2006StatutMembreDernière intervention16 janvier 20091 14 nov. 2007 à 15:09
Bonjour samir ;-),
et bien au lieu de créer des images aléatoirement avec la méthode createCopyAleatory(),
tu les mets dans une liste:
private List<JLabel> images = new ArrayList<JLabel>();
ensuite:
public void creerImages(){
//Tu instancie tes images et tu les ajoutes à la liste. Tu n'oublies pas d'ajouter les listeners.
}
Cordialement,
Pierrick
PS: La victoire contre lyon redonne tous les espoirs même les plus fous...