Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : evenement touche suppr et souri [ Multimédia / Java2D ] (nasriOM)

mardi 6 novembre 2007 à 16:54:29 | evenement touche suppr et souri

nasriOM

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);};
}}
 
 


mercredi 7 novembre 2007 à 16:51:13 | Re : evenement touche suppr et souri

the_wwt

Réponse acceptée !
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

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

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();

        setLocation((screenSize.width - getSize().width) / 2,
                (screenSize.height - getSize().height) / 2);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        new TestMe();
    }

    public void createCopyAleatory() {
        JLabel label = new JLabel(icon);
        label.setBounds(random.nextInt(getSize().width - icon.getIconWidth()),
                random.nextInt(getSize().height - icon.getIconHeight()), icon
                        .getIconWidth(), icon.getIconHeight());
        label.addMouseListener(this);
        label.addMouseMotionListener(this);
        p.add(label);
        p.repaint();
    }

    public void mouseDragged(MouseEvent e) {
        for (JLabel label : selection) {
            label.setLocation(label.getX() + e.getX(), label.getY() + e.getY());
        }
    }

    public void mouseMoved(MouseEvent e) {
    }

    public void mouseClicked(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
        if (e.getSource() instanceof JLabel) {
            JLabel label = (JLabel) e.getSource();
            if (!selection.contains(label))
                label.setBorder(BorderFactory.createEtchedBorder(Color.GREEN,
                        Color.CYAN));
        }
    }

    public void mouseExited(MouseEvent e) {
        if (e.getSource() instanceof JLabel) {
            JLabel label = (JLabel) e.getSource();
            if (!selection.contains(label))
                label.setBorder(BorderFactory.createEmptyBorder());
        }
    }

    public void mousePressed(MouseEvent e) {
        if (e.getSource() instanceof JLabel) {
            JLabel label = (JLabel) e.getSource();
            if (!selection.contains(label)) {
                if (!e.isControlDown()) {
                    for (JLabel labelSelected : selection) {
                        labelSelected.setBorder(BorderFactory
                                .createEmptyBorder());
                    }
                    selection = new ArrayList<JLabel>();
                }
                label.setBorder(BorderFactory.createLineBorder(Color.BLUE, 2));
                selection.add(label);
            } else {
                if (e.isControlDown()) {
                    label.setBorder(BorderFactory.createEmptyBorder());
                    selection.remove(label);
                } else {
                    for (JLabel labelSelected : selection) {
                        labelSelected.setBorder(BorderFactory
                                .createEmptyBorder());
                    }
                    selection = new ArrayList<JLabel>();
                    label.setBorder(BorderFactory.createLineBorder(Color.BLUE,
                            2));
                    selection.add(label);
                }

            }
        }
    }

    public void mouseReleased(MouseEvent event) {
    }

    public void keyPressed(KeyEvent event) {
    }

    public void keyReleased(KeyEvent event) {
        int keyCode = event.getKeyCode();
        if (keyCode == KeyEvent.VK_DELETE) {
            for (JLabel label : selection) {
                p.remove(label);
                p.invalidate();
                p.revalidate();
                p.repaint();
            }
            selection = new ArrayList<JLabel>();
        }
    }

    public void keyTyped(KeyEvent e) {
    }
}

mercredi 14 novembre 2007 à 14:52:44 | Re : evenement touche suppr et souri

nasriOM

Réponse acceptée !
Merci effectivement c'est pas mal
Mais il y a plein d'images partout placé aléatoirement

Moi je veux juste une bibliothèque d'images que je drag and drop! lol

Comment puis je créer un tableau avec mes images à l'intérieur?

cordialement

mercredi 14 novembre 2007 à 15:09:19 | Re : evenement touche suppr et souri

the_wwt

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...

mercredi 14 novembre 2007 à 17:00:59 | Re : evenement touche suppr et souri

nasriOM

Bonjour Pierrick :-)

Ok je vais essayer cela
Si je n'y arrive pas je ferai appel à toi.
Merci Pierrick

ps: La victoire contre l'OL sera le début d'une belle série!!





Cette discussion est classé dans : java, import, javax, awt, nbcopie


Répondre à ce message

Sujets en rapport avec ce message

interface graphique [ par nasriOM ] bonjour,Voilà je suis en train de créer une interface graphique type visio, de dessin d'organigramme. Je sais metter mes éléments à gauche et les fai Probème dans mon code pour port parallèle [ par mageti ] Bonjour à tous,Je poursuis péniblement ma quête à propos de "comment puis-je commander mon port parallèle ?"J'ai bidouillé un petit code à partir des Pb de centrage d'un JLabel vertical dans une JTable [ par MehdiD94 ] Bonjour !!Apres de nombreuses heures vaines, j'appelle a l'aide.J'ai une JTable dont la premiere ligne apres le header contient des JVerticalLabel (cl Probleme avec JButton et ImageIcon [ par ralebole ] J'ai un probleme avec JButton et ImageIcon quand je compile et que j'execute avec "Jcreator Le" tous fonctionne normalement j'ai ma fenetre avec mon b jTable/jCheckBox [ par Dellys ] Bonjour Je voudrai s'avoir commet afficher un jCheckBox sur un ma jTable dans une colonnes de type booléen et aussi lui attribuer un listner < Probleme de requete [ par thanatos67 ] Salut à tous.Je suis en BTS IRIS et pour mon projet je dois créer une base de donnée mysql qui va recevoir des données d'une station météorologique et PB dans main [ par thanatos67 ] Salut à toi lecteur. Oui toi! J'ai un petit soucis.J'ai déjà eu un premier soucis résolu grace à l'aide de TWINUTS (encore merci). J'ai une classe dan Demande d'aide [ par javamen33 ] Bonjour tt le monde je voudrai creer une aplication qui permet de creer des rectangles . j'ai une fenetre qui contient un bouton et un panel ,lorsque jbouton et clavier [ par ulysse00 ] Salut      je cherche si je tape sur le bouton entrée de clavier déclanche une actionlistener package aa;import javax.swing.*;<span style="COLOR: #


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,48 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.