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

AWT/Swing Java Discussion :

Comment passer une donnée d'un panneau à un autre


Sujet :

AWT/Swing Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Par défaut Comment passer une donnée d'un panneau à un autre
    Bonjour,

    Bon tout d'abord mon titre de topic est assez flou j'en conviens mais je vais essayer de l'expliquer mieux ici.

    En fait pour mon projet de stage je dois récupérer plusieurs informations sur la saisie d'un numéro. Ce numéro unique correspond à un produit. Il existe une base Access où je vais chercher tout les devis où apparait ce numéro. Jusque là ca marche à peu pres. Mais je vais aussi chercher l'information concernant les stocks dans un fichier Excel.

    J'ai organisé mon travail de cette façon (à mon avis c'est très mal pensé au départ, mais vous me direz): j'ai une fenêtre principale qui contient un panneau principal. Ce panneau va contenir mon panneau "PanneauAcces", et en dessous mon panneau "PanneauStock". Mais le problème est que je demande la saisie du numéro à l'utilisateur dans un JTextField contenu dans mon PanneauAccess se qui lance une recherche. Et je stocke cette recherche dans un attribut. Seulement voilà maintenant il faut que je récupère cette même recherche pour mon PanneauStock. Mais là je bloque complètement. Comment faire?

    Voilà quelques unes de mes classes simplifiées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class FenetrePrincipale extends JFrame {
     
        public FenetrePrincipale() {
            super("Devis rechange");
            setSize(1000, 700);
            setContentPane(new PanneauPrincipal());
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class PanneauPrincipal extends JPanel {
     
        public PanneauPrincipal() {
            super(new GridLayout(0, 1));
            add(new PanneauAccess());
            add(new PanneauStock());
            setVisible(true);
        }
    }
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    public class PanneauAccess extends JPanel {
     
        private Recherche rec;
     
        /**
         * <p>Instancie les champs de saisi, listes déroulantes, boutons
         * et icones pour le panneau présentant les devis rechange sous
         * Access</p>
         */
        public PanneauAccess() {
            super(new GridLayout(3, 1));
     
            /* champs de recherche */
            JPanel panneauAccessHaut = new JPanel(new GridLayout(2, 2, 10, 10)); 
            panneauAccessHaut.add(panneauPN());
            panneauAccessHaut.add(panneauAnnee());
            panneauAccessHaut.add(panneauAffaire());
            panneauAccessHaut.add(panneauErreur());
            add(panneauAccessHaut);
     
            /* champs de résultat */
            JPanel panneauAccessMilieu = new JPanel(new GridLayout(2, 2));
            panneauAccessMilieu.setBackground(Color.WHITE);
            panneauAccessMilieu.add(panneauFiche());
            panneauAccessMilieu.add(panneauDateDif());
            panneauAccessMilieu.add(panneauQte());
            panneauAccessMilieu.add(panneauCPP());
            add(panneauAccessMilieu);
     
            ...
     
            setVisible(true);
        }
     
        /**
         * <p>Champs de saisi du part number afin d'effectuer une recherche
         * sur celui-ci</p>
         * @return panneauPN, un panneau contenant un texte et un champs de saisi
         * du P/N
         */
        private JPanel panneauPN() {
            JPanel panneauPN = new JPanel(new FlowLayout());
            panneauPN.add(new JLabel("P/N :"));
            champsPN = new JTextField("");
            /* récupération de la valeur du champs sur "entrer" */
            champsPN.addActionListener(new ActionEntrerListener());
            champsPN.setColumns(10);
            panneauPN.add(champsPN);
     
            return panneauPN;
        }
     
        ...
     
        public class ActionEntrerListener implements ActionListener {
     
            /* (non-Javadoc)
             * @see java.awt.event.ActionListener#actionPerformed 
             * java.awt.event.ActionEvent)
             */
            @Override
            public void actionPerformed(ActionEvent evt){
                if(evt.getSource()==champsPN) {
                    JTextField PN = null;
                    PN = (JTextField)evt.getSource();
                    System.out.println((JTextField)evt.getSource());
                    rec = new Recherche(PN.getText());
                    try {
                        rec.recherchePN();
                        premierDevis();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
     
                if(evt.getSource()==champsAffaire) {
                    JTextField Affaire = null;
                    Affaire = (JTextField)evt.getSource();
                    System.out.println((JTextField)evt.getSource());
                    rec = new Recherche(Affaire.getText());
                    try {
                        rec.rechercheAffaire();
                        premierDevis();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
     
                Object monBouton = evt.getSource();
                if(monBouton.equals(precedent)) {
                }
                if(monBouton.equals(suivant)) {
                    suivant();
                }
            }
        }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class PanneauStock extends JPanel {
        // ici j'aimerai récupérer la recherche de PanneauAccess
    }
    Merci de votre aide future

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Par défaut
    Je viens juste de me rendre compte qu'un héritage pourrait faire l'affaire. Mais là encore problème: j'hérite déjà dans PanneauStock de JPanel. Pfff

  3. #3
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Deux possibilités
    1. Tu stockes tes informations dans une variable static
    2. Tu crées un conteneur de données et tu partage la référence entre tes deux panneaux. Le premier alimente le conteneur et le second lit le conteneur
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Par défaut
    Ah ok je commence peut être enfin à entrevoir à quoi sert ce static.

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 47
    Par défaut
    Variable statique? Surement pas dans ce cas ci, encore moins un héritage

    Ici tout ce que tu as à faire c'est t'arranger pour conserver la référence de ton PanneauAccess dans la classe qui a besoin des résultats. Ensuite tu transforme ton PanneauAccess en Java Beans (c'est un Design Pattern assez simple), avec les accesseurs qui te permettront de récupérer les résultats.
    Tu peux aussi passer par une classe alternative comme le suggère Nemek, qui sera également un Java Beans pour bien faire ^^

    Tu n'auras plus alors qu'a faire, dans ton PanneauStock : thePanneauAccess.getResultats()

    Ou si tu choisis l'autre possibilité : Dans ton PanneauAccess : tonBean.setResultats(tesResultats) et de l'autre côté, dans ton PanneauStock : tonBean.getResultats().

    Le plus difficile ici sera de signaler à l'un qu'il doit récupérer les résultats de l'autre, et ça, le plus pro, c'est de passer par des Event et des Listener (qui rentrent également dans les préceptes des Java Beans ).

    Si tu as des questions sur la réalisation, hésite pas.

  6. #6
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    J'utiliserai plutôt un SwingWorker à la place d'évenement
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 47
    Par défaut
    Intéressant cette classe, je ne connaissais pas.
    Si j'ai bien compris ça permet d'éviter les problèmes d'event figés dû au mono-thread de Swing?

    Edit : trouvé un tuto -> http://rom.developpez.com/java-swingworker/

  8. #8
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Disons que ca permet de joliment lancer un traitement long avec une barre de progression.
    Ca évite de coder trop de gestion, mais j'aime pas le côté non réutilisable ... Il faut recréer une instance chaque fois que tu lances l'action.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Par défaut
    J'ai essayé de faire un java bean.

    Voilà ce que ça donne:

    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
    public class BeanRecherche implements Serializable {
     
        private Recherche rec;
     
        public BeanRecherche() {
     
        }
     
        public Recherche getRecherche() {
            return rec;
        }
     
        public void setRecherche(Recherche rec) {
            this.rec = rec;
        }
    }
    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 PanneauAccess extends JPanel {
        
        ...
    
        public class ActionEntrerListener implements ActionListener {
    
            /* (non-Javadoc)
             * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
             */
            @Override
            public void actionPerformed(ActionEvent evt){
                if(evt.getSource()==champsPN) {
                    JTextField PN = null;
                    PN = (JTextField)evt.getSource();
                    System.out.println((JTextField)evt.getSource());
                    uneRecherche = new Recherche(PN.getText());
                    rec.setRecherche(uneRecherche);
                    try {
                        uneRecherche.recherchePN();
                        premierDevis();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
    
                if(evt.getSource()==champsAffaire) {
                    JTextField Affaire = null;
                    Affaire = (JTextField)evt.getSource();
                    System.out.println((JTextField)evt.getSource());
                    uneRecherche = new Recherche(Affaire.getText());
                    rec.setRecherche(uneRecherche);
                    try {
                        uneRecherche.rechercheAffaire();
                        premierDevis();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                
                Object monBouton = evt.getSource();
                if(monBouton.equals(precedent)) {
                }
                if(monBouton.equals(suivant)) {
                    suivant();
                }
            }
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public PanneauStock() {
     
        ...
     
        BeanRecherche rec;
        uneRecherche = rec.getRecherche();
        uneRechercheStockCommande = new RechercheStockCommande(
                    uneRecherche.getElementRecherche());
     
        ...
     
    }
    Mais en faisant BeanRecherche rec; je recréé un bean différent de celui que je veux...

  10. #10
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 47
    Par défaut
    En fait ici ton Bean va servir à :

    - Stocker les résultats de ta recherche (Donc il faudra une fonction pour stocker le résultat (de type set...(...) ) et une ou des variables qui vont stocker le résultat. Donc en supposant que ton résultat est un String, tu auras un String dans ton Bean et des accesseurs pour définir sa valeur et la récupérer.
    - Informer toutes les classes qui sont intéressées par ton résultat qu'il à changer (ou qu'il a été défini, etc.), au moyen d'event/listener (les Event sont envoyés à toutes les classes qui écoutent (sont abonnées) les listeners de ton bean. Ca parait peut-être compliqué comme ça mais ça ne l'est pas tellement )
    - Permettre de récupérer les résultats de l'autre côté (donc avec le get...() )

    Les classes qui vont avoir besoin de communiquer doivent donc toutes les deux posséder la référence du Bean, il faudra donc par exemple passer ce même bean dans les constructeurs de tes deux classes.


    Une fois que la classe qui attend les résultats reçois l'evenement lui disant que les résultats sont prêts, elle va aller les rechercher et les afficher (ou ce que tu veux en faire...)



    Voila, ça c'est une des méthodes de faire communiquer deux classes

    Si tu ne veux pas passer par le système d'Event, tu peux faire un système grossier du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while(mon_resultat_n_a_pas_changé){
        je ne fais rien
    }
    je vais récupérer mon résultats
    Qui est plus ou moins le même principe que Event/Listener, mais en beaucoup beaucoup moins évoluer, raffiné et optimisé ^^

  11. #11
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Par défaut
    la première étape c'est bon:

    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
    public class BeanRecherche implements Serializable {
     
        private String element;
     
        public BeanRecherche() {
     
        }
     
        public String getElement() {
            return element;
        }
     
        public void setElement(String element) {
            this.element = element;
        }
    }
    Mais alors pour les event/listener c'est plus compliqué. Je change le résultat du bean a chaque fois que l'utilisateur fais "entrer" sur un TextField particulier(classe PanneauAccess). Mais comment avertir PanneauStock de ce changement?

  12. #12
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    • Ajoute à ton bean un attribut PropertyChangeSupport
    • Ajoute une constante PROPERTY_ELEMENT = "element";
    • Ajoute des méthodes addPropertyChangeListener(String property, PropertyChangeListener listener) et removePropretyChangeListener(String property, PropertyChangeListener listener) qui appele les méthodes de même signature sur tout nouvel attribut
    • Sur la méthode setElement, appelle la méthode firePropertyChange(PROPERTY_ELEMENT, oldValue, newValue)
    • Lorsque tu passe la référence de ton bean à ton "PanneauStock", ajoute un listener sur le propriété BeanRecherche.PROPERTY_ELEMENT
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  13. #13
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Par défaut
    Bonjour,

    Nemek j'ai suivi le début de ton aide aussi grâce à ces tutoriels et cours de formation pour apprendre Java : http://java.developpez.com/cours/


    voila mon bean à présent:

    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
    public class BeanRecherche implements Serializable {
     
        protected String element;
     
        PropertyChangeSupport changeSupport;
     
        /**
         * TODO commenter le rôle de l'état initial atteind
         */
        public BeanRecherche() {
            element = null; 
            changeSupport = new PropertyChangeSupport(this);
        }
     
        public synchronized void setElement(String val) {
            changeSupport.firePropertyChange("element",element,val);
        }
     
        public synchronized String getElement() {
            return element;
        }
     
        public synchronized void addPropertyChangeListener(PropertyChangeListener listener) {
            changeSupport.addPropertyChangeListener(listener);
        }
     
        public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
            changeSupport.removePropertyChangeListener(listener);
        }
    }
    Seulement après je ne comprend rien. Il faut bien que je dise à mon PanneauAccess quel champs doit changer. Avant de spécifier dans mon PanneauStock un bean. Je me doute qu'il faut que je me serve de çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    monBean.addPropertyChangeListener( new PropertyChangeListener() {
          public void propertyChange(PropertyChangeEvent event) {
            System.out.println("propertyChange : valeur = "+ event.getNewValue());
          }
        } );
    Est-ca que du coup je dois enlever l'événement sur mon JtextField?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    champsPN.addActionListener(new ActionEntrerListener());
    Merci

  14. #14
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu as une méthode getPropertyName dans le PropertyChangeEvent qui est censée te renvoyer le nom du champ qui a changé.

  15. #15
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Par défaut
    Non je me suis peut être mal exprimé, mais en fait je sais quel champs va changer, ca sera champsPN. Par contre je ne sais pas comment faire en sorte que mon bean le comprenne.

  16. #16
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    C'est ma 4e puce qui le fait

    D'ailleurs addPropertyChangeListener accepte deux formes, l'une avec la propriété et l'autre sans. Si tu ne précises pas de propriété tu es notifié des modifications sur toutes les propriété. Alors que si tu en précises une tu es uniquement notifié de la propriété en question.

    Ensuite tu as supprimer l'affectation dans ton setter.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  17. #17
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Par défaut
    Peux-tu être plus clair? Et peut être aussi proposer du code. Je comprends pas de quoi tu me parles. Ca doit être évident pour toi mais pour moi pas du tout.

  18. #18
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Citation Envoyé par Benduroy Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class BeanRecherche implements Serializable {    
        public synchronized void setElement(String val) {
            changeSupport.firePropertyChange("element",element,val);
        }
    }
    Tu ne changes pas la valeur d'élément !!!
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  19. #19
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Par défaut
    En effet j'avais supprimé deux lignes du tuto pensant qu'elle servait à rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        public synchronized void setElement(String val) {
            String oldElement = element ;
            element = val;
            changeSupport.firePropertyChange("element",oldElement,val);
        }
    Voilà et maintenant?

  20. #20
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Et maintenant quoi ?
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

Discussions similaires

  1. Passer une donnée d'un composant à un autre
    Par Zipit dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 08/11/2012, 14h54
  2. Réponses: 2
    Dernier message: 27/03/2012, 15h08
  3. Réponses: 13
    Dernier message: 13/09/2006, 22h39
  4. Réponses: 8
    Dernier message: 04/04/2006, 18h29
  5. Comment passer une procédure en paramètre ?
    Par gudul dans le forum Langage
    Réponses: 4
    Dernier message: 30/09/2005, 14h57

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