IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Gestion des evenements ?


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut Gestion des evenements ?
    Bonjour

    J'ai une application graphique et de nombreux evenements. Par souci de clarté et de bonnes pratique en java, je ne sais pas qu'elle est la meilleur gestion d'evenment ?

    Au départ je gérais mes venements en interne à ma classe graphique, cela rendait visuellement le codage difficile. J'ai mis des listener sur des classes externes en implementant à celle-ci des evenements.

    Je me pose à présent la question, si il est interessant d'utiliser une classe générale pour tous mes evenements ActionListener (par exemple) et mes evenements MouseListener. Je crois que c'est possible en testant avec "getSource" ??? Mais je ne suis pas sur de ça.

    J'ai vu qu'il y a avait aussi la possibilité d'hérité de "adaptateurs " pour eviter d'implémenter des methodes.

    Y a t'il d'autre methode ?? Que me conseillez vous ?

    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par raimus88 Voir le message
    J'ai mis des listener sur des classes externes en implementant à celle-ci des evenements.
    j'ai déja essayer cette méthode et cela a alléger beaucoup mon code qui devient lisible de plus . pour le moment j'ai pas trouvé un problème

  3. #3
    Membre expérimenté Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Par défaut
    Moi je passe par un adapter "maison":
    -le listener
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.FocusEvent;
    import java.awt.event.FocusListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
     
    public interface IHMListener 
    		extends ActionListener,WindowListener, MouseListener, ItemListener, FocusListener,KeyListener  {
    	//ActionListener
    	public void actionPerformed(ActionEvent arg0);
    	//WindowListener
    	public void windowActivated(WindowEvent arg0);
    	public void windowClosed(WindowEvent arg0);
    	public void windowClosing(WindowEvent arg0);
    	public void windowDeactivated(WindowEvent arg0);
    	public void windowDeiconified(WindowEvent arg0);
    	public void windowIconified(WindowEvent arg0);
    	public void windowOpened(WindowEvent arg0);
    	//MouseListener
    	public void mouseClicked(MouseEvent e);
    	public void mousePressed(MouseEvent e);
    	public void mouseEntered(MouseEvent e);
    	public void mouseExited(MouseEvent e);
    	//ItemListener
    	public void itemStateChanged(ItemEvent arg0);
    	//FocusListener
    	public void focusGained(FocusEvent arg0);
    	public void focusLost(FocusEvent arg0);
    	//KeyListener
    	public void keyPressed(KeyEvent arg0);
    	public void keyReleased(KeyEvent arg0);
    	public void keyTyped(KeyEvent arg0);
    }
    - le listener adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    import java.awt.event.ActionEvent;
    import java.awt.event.FocusEvent;
    import java.awt.event.ItemEvent;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseEvent;
    import java.awt.event.WindowEvent;
     
     
    public class IHMListenerAdapter implements IHMListener {
    	@Override
    	public void actionPerformed(ActionEvent arg0) {
    	}
    	@Override
    	public void windowActivated(WindowEvent arg0) {
    	}
    	@Override
    	public void windowClosed(WindowEvent arg0) {
    	}
    	@Override
    	public void windowClosing(WindowEvent arg0) {
    	}
    	@Override
    	public void windowDeactivated(WindowEvent arg0) {
    	}
    	@Override
    	public void windowDeiconified(WindowEvent arg0) {
    	}
    	@Override
    	public void windowIconified(WindowEvent arg0) {
    	}
    	@Override
    	public void windowOpened(WindowEvent arg0) {
    	}
    	@Override
    	public void mouseClicked(MouseEvent e) {
    	}
    	@Override
    	public void mouseEntered(MouseEvent e) {
    	}
    	@Override
    	public void mouseExited(MouseEvent e) {
    	}
    	@Override
    	public void mousePressed(MouseEvent e) {
    	}
    	@Override
    	public void mouseReleased(MouseEvent arg0) {
    	}
    	@Override
    	public void itemStateChanged(ItemEvent arg0) {
    	}
    	@Override
    	public void focusGained(FocusEvent arg0) {
    	}
    	@Override
    	public void focusLost(FocusEvent arg0) {
    	}
    	@Override
    	public void keyPressed(KeyEvent arg0) {
    	}
    	@Override
    	public void keyReleased(KeyEvent arg0) {
    	}
    	@Override
    	public void keyTyped(KeyEvent arg0) {
    	}
    }
    Son utilisation (un exemple tire d'un de mes projets):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    private JButton getJButtonFermer() {
     if(jButtonFermer==null){
      jButtonFermer=new JButton("Fermer");
      jButtonFermer.setBounds(new Rectangle(new Point(385,47),jbtDim));
      jButtonFermer.addActionListener(this.chargerListener());
     }
     return jButtonFermer;
    }
    private IHMListener chargerListener() {
     if(ecouteur==null){
      ecouteur=new IHMListenerAdapter(){
    @SuppressWarnings("unchecked")
    @Override
       public void actionPerformed(ActionEvent event) {
        Object 	source=event.getSource();
        Class	classSource=source.getClass();
        if(classSource==JButton.class){
    //Bouton Annuler
         if(source.equals(IHMDiapo.this.getJButtonAnnuler())){
          IHMDiapo.this.annuler();
          IHMDiapo.this.activeBouton(false);
    //Bouton Enreg
         }else if(source.equals(IHMDiapo.this.getJButtonEnreg())){
          IHMDiapo.this.enreg();
    //Bouton Fermer
         }else if(source.equals(IHMDiapo.this.getJButtonFermer())){
          IHMDiapo.this.fermer();
    //Bouton de choix de fichier
         }else if(source.equals(IHMDiapo.this.getJButtonChooser())){
          IHMDiapo.this.getJTfCible().setText(IHMDiapo.this.choisirFichier());
         }
    //ComboBox Type
        }else if(classSource==JComboBox.class){
         IHMDiapo.this.activeBouton(true);
        }
      }
    @SuppressWarnings("unchecked")
    @Override
      public void keyReleased(KeyEvent arg0){
       Object source=arg0.getSource();
       Class classSource=source.getClass();
       if(classSource==JTextField.class){
        IHMDiapo.this.activeBouton(true);
       }
      }
    @Override
      public void windowClosing(WindowEvent arg0) {
       IHMDiapo.this.fermer();
      }
     };
     }
     return ecouteur;
    }
    Par je suis pas certain que ce soit une bonne pratique, mais ça ne pose à priori pas de problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des evenements d'un Menu
    Par juk dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 05/12/2006, 16h37
  2. Gestion des evenements avec la SDL
    Par gusgus dans le forum Ogre
    Réponses: 5
    Dernier message: 01/11/2006, 10h47
  3. Réponses: 3
    Dernier message: 25/08/2006, 23h11
  4. Réponses: 11
    Dernier message: 15/02/2006, 14h45
  5. [C#] Gestion des evenements
    Par zebulix13 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 12/06/2004, 18h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo