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.
Pouvez vous m'aider à résoudre mon problème.
voilà mon code:
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
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);
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);
}
publicvoid keyPressed(KeyEvent event)
{
int keyCode = event.getKeyCode();
if(keyCode == keyEvent.VK_DELETE)
{
}
}
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
}
publicvoid mouseMoved(MouseEvent e){
try{}
catch(Exception err){
System.out.println("Erreur" + err);};
}}