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 :

Probleme actionlistener


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Par défaut Probleme actionlistener
    Bonjour a tous,

    Ce code constituer de 4 fichier java différent est juste un moyen d'expliquer mon problème, je n'arrive pas a faire ceux-ci, malgré mais nombreuse recherche et surtout je suis un debutant :
    - quand cliquant sur le bouton suivant1 celui-ci s'inactive ( ca j'y arrive) mais surtout qu'il réactive ( c'est a dire setEnabled(true)) les boutons suivant2 et retour.
    -et ensuite quand on clique sur le bouton retour celui-ci désactive ( setEnabled(false) ) les bouton retour et suivant2 et réactive le bouton suivant1.

    Le truc qui me pose un probleme c'est que les bouton sont dans des fichier different.Et faut qu'ils le restent.
    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
    import javax.swing.*;
    class Main extends JFrame{
        public Main(){
            JFrame fenetre=new JFrame("Projet Genie Logiciel");
     
            fenetre.setSize(1280,800);
            fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            fenetre.setVisible(true);
     
            PanelPrincipal principal=new PanelPrincipal();
     
            SwingUtilities.updateComponentTreeUI(fenetre);
            fenetre.setContentPane(principal);
        }
        public static void main(String [] arg){
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    Main fen=new Main();
                }
            });  
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class PanelPrincipal extends JPanel{
        public PanelPrincipal(){
               SousPanelUn un=new SousPanelUn();
               this.add(un);
               SousPanelDeux deux=new SousPanelDeux();
               this.add(deux);
      }
    }


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class SousPanelUn extends JPanel{
        JButton suivant1=null;
        public SousPanelUn(){
               suivant1=new JButton("Suivant1");
               suivant1.addActionListener(?); //???????????
               this.add(suivant1);
      }
    }

    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
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class SousPanelDeux extends JPanel{
        JButton suivant2=null,retour=null;
        public SousPanelDeux(){
               suivant2=new JButton("Suivant2");
               suivant2.addActionListener(?); //???????????
               suivant2.setEnabled(false);
               this.add(suivant);
     
               retour=new JButton("Retour");
               retour.addActionListener(?);////??????????????
               retour.setEnabled(false);
               this.add(retour);
      }
    }

    J'espère que vous pourrait m'aider.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Par défaut
    bonjour,
    c'est quoi ca : }
    public static void main(String [] arg){
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    Main fen=new Main();
    }
    }); ??
    et dans le dernier si tu veux faire un "aller retour"il faut qu'il y ait un bouton "true"" et l'autre "false"
    J'espère que ca t'aidera

  3. #3
    Membre actif
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Par défaut
    Merci de ta réponse, mais j'avoue que tu m'as pas trop aidé, je ne vois pas ce que tu me conseil de faire.


    Ce que je n'arrive pas a faire:

    -c'est quand cliquant sur le bouton suivant1 , les boutons retour et suivant2 soit "activé" c'est a dire retour.setEnabled(true) et suivant2.setEnabled(true) et quand même temps le bouton suivant1 soit "désactivé" suivant1.setEnabled(false) .

    -deuxième chose, c'est quand cliquant sur le bouton retour, le bouton suivant1 soit "réactivé" suivant1.setEnabled(true) et retour.setEnabled(false) et suivant2.setEnabled(false)

    En gros:
    en cliquant sur suivant1 ,ca fait:
    ->suivant1.setEnabled(false);
    ->suivant2.setEnabled(true);
    ->retour.setEnabled(true);

    en cliquant sur retour,ca fait:
    ->suivant1.setEnabled(true);
    ->suivant2.setEnabled(false);
    ->retour.setEnabled(false);


    La difficulté que je rencontre c'est que le bouton suivant1 est dans un fichier différent que les bouton suivant2 et retour.
    J'ai essayer d'utiliser une autre classe ( qui est dans un autre fichier que les boutons) qui implement ActionListener, pour réaliser les action que j'ai décrite plus tot mais cela ne marche pas.

    J'espère avoir mieux décrit mon problème, HELP HELP

  4. #4
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Il faut que tes boutons soient accessibles d'une classe à une autre en les déclarant public. Ca marchera mais c'est très loin d'être la méthode la plus propre.
    Personnellement, voici ce que je ferais : pour chaque classe contenant un bouton succeptible d'être activé/désactivé par une ou plusieurs autres classes, je définirais une méthode du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void setActiviteBoutonX(boolean activite){
       this.boutonX.setEnables(activite);
    }
    comme ça tu peux accéder depuis une classe tierce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public ClassTierce extends ...{
       ...
       instanceDeClasseContenantBoutonX.setActiviteBoutonX(true);
    }
    remarque : cette façon de faire nécessite que la classe tierce possède une référance à la classe contenant le bouton (instanceDeClasseContenantBoutonX dans mon exemple). Cette référence, pourra être passée dans le constructeur de ClasseTierce, ou bien via un simple setteur (ex : setReferanceVersClasseContenantBoutonX(ClasseBoutonX reference)).

  5. #5
    Membre actif
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Par défaut
    Merci, ta mis le doigt la ou je bloque. La première solution n'est pas soigné comme tu le dis.

    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
    package test;
    import javax.swing.JButton;
    import javax.swing.JPanel;
     
    public class SousPanelUn extends JPanel{
        private JButton suivant1=null;
        public SousPanelUn() {
            suivant1=new JButton("suivant1");
            suivant1.addActionListener(new Act(this,new SousPanelDeux()));
    //la ligne du dessus, probleme
            this.add(suivant1);
        }
        public void setActiviteBoutonX(boolean activite){
            this.suivant1.setEnabled(activite);
        }
     
    }
    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
    package test;
     
    import javax.swing.JButton;
    import javax.swing.JPanel;
     
    public class SousPanelDeux extends JPanel{
        private JButton suivant2=null,retour=null;
        public SousPanelDeux() {
            suivant2=new JButton("suivant2");
            // suivant2.addActionListener());
            suivant2.setEnabled(false);
            this.add(suivant2);
     
            retour=new JButton("retour");
            //retour.addActionListener(new Act());
            retour.setEnabled(false);
            this.add(retour);
        }
        public void setActiviteBoutonX(boolean activite){
            this.suivant2.setEnabled(activite);
        }
    }

    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
    package test;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
     
    public class Act implements ActionListener{
        SousPanelUn un;
        SousPanelDeux deux;
        public Act(SousPanelUn un,SousPanelDeux deux) { //// c'est la que je bloque
            this.un=un;
            this.deux=deux;
        }
        public void actionPerformed(ActionEvent e) {
            if (e.getActionCommand()=="suivant1"){
                un.setActiviteBoutonX(false);
                deux.setActiviteBoutonX(true);
            } else{
                JOptionPane.showMessageDialog(null," ca marche pas");
            }
        }
    }
    Tout compile et ce lance sans probleme, j'arrive a inactivé le bouton suivant1, mais pas activé les bouton retour et suivants.
    Je sais que cela vien de 2 lignes qui sont:

    ->public Act(SousPanelUn un,SousPanelDeux deux)
    ->suivant1.addActionListener(new Act(this,new SousPanelDeux()));

    Mais je ne vois quoi mettre.Je ne connais pas les setteur tu pourrait me donner un exemple de setteur,s'il te plait.

Discussions similaires

  1. Probleme actionListener d'un JPanel lié à l'applet
    Par cirilio27 dans le forum Applets
    Réponses: 4
    Dernier message: 17/02/2010, 13h45
  2. probleme dans ActionListener
    Par zeero_cool dans le forum Composants
    Réponses: 1
    Dernier message: 03/09/2008, 15h05
  3. Réponses: 8
    Dernier message: 28/08/2007, 14h29
  4. probleme actionListener JMenuItem
    Par jolatouf dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 13/06/2007, 10h11
  5. [ActionListener] probleme d'implementation
    Par sebpsi dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 01/04/2007, 13h58

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