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 :

pb avec itemStageChanged


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut pb avec itemStageChanged
    bonjours a tous voici mon probleme j'ai cree une application avec une barre menu dans cette barre menu on peut y trouver les option de l'application quand on clique dessu une fenetre a onglet apparait puis quand je clique sur l'onglet taille il ya des jComboBox si je vais sur le JComboBox pour changer la taille de la fenetre je selectionne 382*360 dans le JComboBox cette taille en positionner en 3eme en partant du haut
    puis j'ai un bouton valider pour que l'utilisateur puisse valider et que la fenetre change de taille instantanement mais quand je fait un ItemStageChanged cela ne fait rien du tout voici le code

    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
     
            private int longeurFenetre = LONGUEUR_FENETRE;
            private int largeurFenetre = LARGEUR_FENETRE;
     
    	public void itemStateChanged(ItemEvent e)
        {
    		JButton boutonClique = (JButton) e.getSource();
     
            if(e.getSource()==choix6 && choix6.getItemAt(3)=="382*360" && boutonClique == valider2)
            {
     
            	 largeurFenetre = 360;
            	 longeurFenetre = 382;
     
            }
        }
    je c'est pas si mon code est bon ou si c'est juste une erreur de frappe

    sinon si cela peut vous aidez un peu plus les longueur de la feentre a l'apparition sont dans une constante que j'implente a la class
    dans la constante les mesure son noter comme sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    public int LONGUEUR_FENETRE = 332;
    public int LARGEUR_FENETRE = 315;

    merci d'avance jerem721

  2. #2
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut
    allo vous pouvez m'aider ou pas ??
    si un truc est mal expliquer merci de le signaler je frais de mon mieu pour le reexpliquer !!

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par jerem721 Voir le message
    [...]
    mais quand je fait un ItemStageChanged cela ne fait rien du tout voici le code
    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
     
            private int longeurFenetre = LONGUEUR_FENETRE;
            private int largeurFenetre = LARGEUR_FENETRE;
     
    	public void itemStateChanged(ItemEvent e)
        {
    		JButton boutonClique = (JButton) e.getSource();
     
            if(e.getSource()==choix6 && choix6.getItemAt(3)=="382*360" && boutonClique == valider2)
            {
     
            	 largeurFenetre = 360;
            	 longeurFenetre = 382;
     
            }
        }
    Un ItemListener se met en general sur une JComboBox (voir plus bas), or d'apres ton code tu essaies de recuperere un evenement sur le bouton . C'est a l'ActionListener du bouton de faire ce genre de choses. Bref, il semble y avoir un gros mic-mac.

    Il faut faire attention a la gestion des evenements dans un ItemListener, en effet on peut recevoir plusieurs evenements quand la selection de la combo change. En general, il convient de les traiter de la maniere suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    myCombo.addItemListener(new ItemListener() {
      public void itemStateChanged(ItemEvent event) {
        if (event.getStateChange() == ItemEvent.SELECTED) {
          JComboBox source = (JComboBox)event.getSource();
          ...
        }
      }
    });
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut
    par exemple si l'utilisateur dans la JComboBox choisi la 3eme option le code serrais comme ceci??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    myCombo.addItemListener(new ItemListener() {
      public void itemStateChanged(ItemEvent event) {
        if (event.getStateChange() == ItemEvent.SELECTED) {
          JComboBox source = (JComboBox)event.getSource();
          if(source ==  3){
           .....
          }
        }
      }
    });

  5. #5
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut
    pouvez vous me dire si le code ci dessus est bon ???

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (source.getSelectedIndex() == 3) {
    ...
    }
    la source elle-meme (la combo) ne peut pas etre egale a 3. Tu dois tester l'indice de la valeur actuellement selectionnee.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #7
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut
    c''est bon le probleme est reglee merci a toi Bouye


    une autre question maissurvenue dans la nuit
    car mais habitude en programmation sont de separer l'interface de la class moteur
    -comment faire le lien entre le le JComboBox de la class ou est l'interface et la class moteur?

  8. #8
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    En utilisant le pattern Commande ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  9. #9
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut
    comprend pas tout la

    pour les actionListener pour utiliser les boutons dans la class moteur j'utilise sa
    dans la class moteur (par exemple pour les bouton de la claculatrice)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Calculatrice parent;
    moteurCalcul(Calculatrice parent) {
    		this.parent = parent;
    	}
    public void actionPerformed(ActionEvent événement) {
    ....
    }
    et dnas la class interface de la calculatrice j'avais mis sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    moteurCalcul moteurCalcul = new moteurCalcul(this);
    		bouton0.addActionListener(moteurCalcul);
    		bouton1.addActionListener(moteurCalcul);
                    ....


    mais pour les JComboBox comme c pas des ActionListener qu il faut utiliser pour les faire fonctionner il faut faire quoi??

    car j'ai aps tros compris avec le
    pattern Commande

    meric de me reexpliquer sa clairement car c'est tres confu la dnas ma tete

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    En general, au niveau conception, on decouple (detache) la partie interface graphique/GUI de la partie metier. Ainsi lorsque ta combo recoit un event, elle transmet une commande/action au moteur qui fera un calcul, calcul qui sera affiche en retour dans la calculette. En aucun cas le moteur ne gere l'interface graphique. Apres il y a differentes maniere plus ou moins simple d'implementer la commande.

    Donc generalement c'est la caculatrice (l'application graphique) qui a un moteur de calcul (et non pas l'inverse). Quand la calculatrice recoit un evenement elle prepare une commande que le moteur execute (ex : "execute la commande qui fait 4+5"). Si besoin la calculatrice stocke les etats intermediaires avant de passer commande (ex si l'utilisateur a uniquement clique sur "4" et "+", la commande n'est pas transmise au moteur de calcul).

    Note : la calculatrice peut aussi avoir une apparence/skin, qui est en fait une classe a laquelle elle delegue son apparence. Cette skin se contente juste de changer l'aspect et les sons ainsi que certains comportement liees a l'interface graphique de la calculette. De meme, cette skin n'a aucun lien direct avec le moteur de calcul.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  11. #11
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 178
    Par défaut
    sa j'avais compris mais je te remercie de m'avoir expliquer cela ma permit de mieux comprendre vraiment a quoi sa servait et comment sa marchait

    mais le truc c'est que le code que j'ai mis dans le post avant c'etait pour fair ele lien entre la class moteur et l'interface des boutons non? (si j'ai bine compris)

    mais comme les JComboBox ce ne sont pas des actionListener mais des ItemListner donc il me faudrait quoi comme code pour faire le lien ente les JComboBox qui sont dans la class Interface et la Class moteur ???

    je c'est aps si je suis assez clair. ^^

Discussions similaires

  1. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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