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

avec Java Discussion :

Gestion d'événements sans interface graphique


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 33
    Points : 24
    Points
    24
    Par défaut Gestion d'événements sans interface graphique
    Bonjour,

    J'ai déjà fait des interfaces graphiques en java, j'avais un niveau plutôt correct dans ce langage. Cependant j'avais restreint jusqu'à présent la gestion des événements aux éléments de l'interface graphique (ex : bouton).

    Aujourd'hui j'essaye de lier un événement à une classe : lorsqu'on modifie une propriété de la classe, on veut déclencher un événement.

    J'ai deux pistes :

    addPropertyChangeListener(new PropertyChangeListener())
    -> je n'arrive pas à le faire fonctionner...

    EventHandler
    -> ce nom me rappelle la gestion d'événement en C# avec laquelle j'ai déjà eu la chance de travailler.
    Est-ce qu'il me suffit de calquer C# pour réussir à faire ce que je veux?

    A savoir que j'effectue ces tests dans un projet Java, mais qu'à terme je souhaite intégrer la gestion d'événements à une appli J2EE. Je me suis dit que ce serait la même chose ; si toutefois je me trompe, arrêtez-moi toute suite.

    En fait je n'arrive pas à trouver d'exemple concret car dès qu'on saisie "événement java" dans google on ne trouve que des choses liées aux interfaces graphiques...
    J'aurais donc souhaité un exemple concret.

    Imaginons que j'ai une classe Personne :

    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
    public class Personne {
        private String nom;
        private String prenom;
     
        public Personne(String nom, String prenom) {
            this.nom = nom;
            this.prenom = prenom;
        }
     
        public String getNom() {
            return nom;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
        public String getPrenom() {
            return prenom;
        }
     
        public void setPrenom(String prenom) {
            this.prenom = prenom;
        }
    }
    Et un void main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class TestGestionEvent {
        public static void main(String[] args) {
            Personne p;
            p=new Personne("jj","kk");
     
            p.setNom("ffdd");
            p.setPrenom("dddss");
        }  
    }
    On pourrait imaginer l'événement suivant :
    Lorsque je modifie la propriété nom, je souhaite que la propriété prénom prenne la même valeur que nom.

    S'il vous plaît :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void setNom(String nom) {
            this.nom = nom;
            this.prenom = nom; // je ne veux pas ça    
            setPrenom(nom); // ou ça
        }
    Je prend un exemple certes peu pertinent, mais simple et léger en terme de code (il faut juste mettre le setnom dans une fonction événementielle).
    Mon objectif est bien d'apprendre à gérer les événements...

    Merci d'avance pour votre aide !

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Marie Br Voir le message
    addPropertyChangeListener(new PropertyChangeListener())
    -> je n'arrive pas à le faire fonctionner...
    Il faut bien sûr explicitement coder le addPropertyChangeListener() et une méthode firePropertyChange() qui devra être appelée à chaque changement.
    Exemple :
    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
    public class Personne {
        private String nom;
        private String prenom;
     
        protected EventListenerList listenerList = new EventListenerList();
     
        public Personne(String nom, String prenom) {
            this.nom = nom;
            this.prenom = prenom;
        }
     
        public String getNom() {
            return nom;
        }
     
        public void setNom(String nom) {
        	String oldValue = this.nom;
            this.nom = nom;
            firePropertyChange("nom", oldValue, nom);
        }
     
        public String getPrenom() {
            return prenom;
        }
     
        public void setPrenom(String prenom) {
        	String oldValue = this.prenom;
            this.prenom = prenom;
            firePropertyChange("prenom", oldValue, prenom);
        }
     
        public void addPropertyChangeListener(PropertyChangeListener listener) {
        	this.listenerList.add(PropertyChangeListener.class, listener);
        }
     
        public void removePropertyChangeListener(PropertyChangeListener listener) {
        	this.listenerList.remove(PropertyChangeListener.class, listener);
        }
     
        protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
        	if (this.listenerList.getListenerCount(PropertyChangeListener.class) > 0) {
        		PropertyChangeEvent event = new PropertyChangeEvent(this, propertyName, oldValue, newValue);
        		for (PropertyChangeListener listener : this.listenerList.getListeners(PropertyChangeListener.class)) {
        			listener.propertyChange(event);
        		}
        	}
        }
    }
    Citation Envoyé par Marie Br Voir le message
    EventHandler
    -> ce nom me rappelle la gestion d'événement en C# avec laquelle j'ai déjà eu la chance de travailler.
    Est-ce qu'il me suffit de calquer C# pour réussir à faire ce que je veux?
    Tu parles de la classe java.beans.EventHandler ?
    Cette classe sert plutôt à générer des listeners...



    Citation Envoyé par Marie Br Voir le message
    A savoir que j'effectue ces tests dans un projet Java, mais qu'à terme je souhaite intégrer la gestion d'événements à une appli J2EE. Je me suis dit que ce serait la même chose ; si toutefois je me trompe, arrêtez-moi toute suite.
    Par contre c'est pour faire quoi exactement ? Parce que selon le contexte dans un projet J2EE les évènements ne sont pas forcément adapté...


    a++

Discussions similaires

  1. Gestion d’évènement et interface graphique
    Par felix01 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 26/11/2012, 17h39
  2. Réponses: 2
    Dernier message: 21/03/2009, 20h13
  3. [VB6] Programme sans interface graphique
    Par yuan dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 30/05/2006, 19h29
  4. ActiveX dans un projet sans interface graphique
    Par Nalfouille dans le forum MFC
    Réponses: 6
    Dernier message: 04/01/2006, 17h30
  5. [Kylix] Programme sans interface graphique
    Par pewpew2001 dans le forum EDI
    Réponses: 1
    Dernier message: 06/10/2005, 19h46

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