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

Agents de placement/Fenêtres Java Discussion :

[JMenuItem] activer/desactiver


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut [JMenuItem] activer/desactiver
    Salut,

    Je veux activer et désactiver un JMenuItem (mi1) quand on clique sur le JMenuItem mi2. Le problème c'est que je
    veux avoir une unité de compilation pour la barre de menu, et une autre dans laquelle
    je vais gérer le clic sur mi2.

    voilà le fichier java qui permet d'avoir la barre de menu:

    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
     
     
    package test;
     
    import javax.swing.*;
     
    import java.awt.event.*;
     
     
     
    public class Barmenu extends JMenuBar
    {
      Acceuil a = new Acceuil(); // la classe qui gère le clic sur mi2
     
      // les options du menu fichier
     
      JMenuItem mi1;
      JMenuItem mi2;
     
      public Barmenu()
      {
        // le menu fichier
     
        JMenu m1 = new JMenu("Fichier");
        m1.setMnemonic(KeyEvent.VK_F);
     
        // les options du menu fichier
     
        mi1 = new JMenuItem("MenuItem 1");
        mi2 = new JMenuItem("MenuItem 2");
     
       // ajout d'un écouteur d'actions au menuitem2
     
       mi2.addActionListener(a);
     
       // ajout des options au menu fichier
     
       m1.add(mi1);
       m1.add(mi2);
     
       // ajout du menu fichier à la barre de menu
     
       add(m1);
     
     }
     
    }
    le fichier qui gère le clic sur mi2:

    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
     
     
    package test;
     
    import javax.swing.*;
     
    import java.awt.*;
    import java.awt.event.*;
     
    public class Acceuil extends JFrame implements ActionListener 
    {
      Barmenu bar;
     
      public Dimension getPreferredSize()
      {
        return new Dimension (700,550);
      }
     
      public Acceuil()
      {
      }
     
      public void initJFrame(String s)
      {
        setTitle(s);
     
        // fermer la fenêtre
     
        addWindowListener(new WindowAdapter()
        {
    	public void windowClosing(WindowEvent e)
    	{
    	  System.exit(0);
    	}
        });
     
        // barre de menu de la JFrame		
     
        bar = new Barmenu();
        setJMenuBar(bar);
     
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
      }
     
     
      public void actionPerformed(ActionEvent e)
      {
     
         /* j'ai utilisé try parce que j'avais une erreur lorsque je 
          * cliquais sur le mi2.
          * voilà le message d'erreur: "Erreur: null"
          */
     
        try
        {
     
         if (bar.mi1.isEnabled())
         {
           bar.mi1.Enabled(false);
         }
         else
         {
           bar.mi1.Enabled(true);
         }
        }
        catch(Exception e)
        {
         System.out.println("Erreur: " + e.getMessage());
        }
      }
     
     
     
      public static void main (String arg[])
      {
     
       String s = "Barre de menu";
       Acceuil f1 = new Acceuil();
       f1.initJFrame(s);
     
      }
     
    }
    En bref, je veux activer ou désactiver mi1 dans le fichier Acceuil.java
    Merci d'avance
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  2. #2
    Membre habitué Avatar de Khrysby
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2005
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Avril 2005
    Messages : 239
    Points : 144
    Points
    144
    Par défaut
    En fait, tu as une méthode qui s'appelle setEnable() qui permet d'activer ou pas une item d'un menu. tu fais : MonItemMenu.setEnable(false). Bien sur, tu vas le faire en évènement. C'est à dire que tu vas creer un listener qui vas écouter le click sur le bouton dont tu veux qu'il désactive l'autre bouton et dans l'évènement tu va lui mettre ce que je t'ai mis plus haut. J'espere que j'ai répondu à ta question... Si tu veux que je resplique differement dit le moi...
    Mickaël

  3. #3
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    Salut,
    Merci, vous pouvez expliquer autrement? S'il vous plaît relisez bien mon post avant.
    Merci
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 137
    Points : 143
    Points
    143
    Par défaut
    Je ne sais pas si je me trompe, jai survolé ton code, mais il ya apparemment un gros problème de conception :

    dans ta 1ère classe, tu crées un objet Accueil, et dans dans ta classe 2 tu en crées un 2ème, ce qui fait que tu te retrouves avec des 2 objets acceuils lors de l'exécution.

    Solution : dans ta première classe, celle qui crée le menu, tu passes l'objet Accueil en paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TaMenuBar( Accueil TonAccueil )
    {
     this.accueil = tonAcceuil ;
     
     tonItem2.addActionListener( this.accueil );
    }

    en oubliant pas de remplacer la définition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Accueil acceuil = new Accueil();
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Acceuil acceuil = null ;


    Et dans l'autre classe, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taMenuBar = new maMenuBar( this );
    Et le tour est joué !

  5. #5
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    Merci, ça marche. voici le code modifié:

    la classe Barmenu:

    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
     
     
    package test;
     
    import javax.swing.*;
     
    import java.awt.event.*;
     
     
     
    public class Barmenu extends JMenuBar
    {
      Acceuil a; // la classe qui gère le clique sur mi2
     
      // les options du menu fichier
     
      JMenuItem mi1;
      JMenuItem mi2;
     
      public Barmenu(Acceuil a)
      {
      	this.a = a;
     
        // le menu fichier
     
        JMenu m1 = new JMenu("Fichier");
        m1.setMnemonic(KeyEvent.VK_F);
     
        // les options du menu fichier
     
        mi1 = new JMenuItem("MenuItem 1");
        mi2 = new JMenuItem("MenuItem 2");
     
       // ajout d'un écouteur d'actions au menuitem2
     
       mi2.addActionListener(a);
     
       // ajout des options au menu fichier
     
       m1.add(mi1);
       m1.add(mi2);
     
       // ajout du menu fichier à la barre de menu
     
       add(m1);
     
     }
     
    }

    la classe Acceuil:

    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
     
     
    package test;
     
    import javax.swing.*;
     
    import java.awt.*;
    import java.awt.event.*;
     
    public class Acceuil extends JFrame implements ActionListener 
    {
      Barmenu bar;
     
      public Dimension getPreferredSize()
      {
        return new Dimension (700,550);
      }
     
      public Acceuil()
      {
      }
     
      public void initJFrame(String s)
      {
        setTitle(s);
     
        // fermer la fenêtre
     
        addWindowListener(new WindowAdapter()
        {
    	public void windowClosing(WindowEvent e)
    	{
    	  System.exit(0);
    	}
        });
     
        // barre de menu de la JFrame		
     
        bar = new Barmenu(this);
        setJMenuBar(bar);
     
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
      }
     
     
      public void actionPerformed(ActionEvent e)
      {
        try
        {
     
         if (bar.mi1.isEnabled())
         {
           bar.mi1.setEnabled(false);
         }
         else
         {
           bar.mi1.setEnabled(true);
         }
        }
        catch(Exception err)
        {
         System.out.println("Erreur: " + err.getMessage());
        }
      }
     
     
     
      public static void main (String arg[])
      {
     
       String s = "Barre de menu";
       Acceuil f1 = new Acceuil();
       f1.initJFrame(s);
     
      }
     
    }
    Merci encore.
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

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

Discussions similaires

  1. ACTIVER/DESACTIVER CONTRAINTE
    Par cyril dans le forum Oracle
    Réponses: 4
    Dernier message: 09/11/2005, 10h00
  2. appel de fonction à partir d'une image activer/desactiver
    Par philippe123 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/08/2005, 16h26
  3. Réponses: 9
    Dernier message: 06/07/2005, 14h52
  4. les event de IBQuery pour activer,desactiver la Transaction?
    Par amad206 dans le forum Bases de données
    Réponses: 1
    Dernier message: 31/03/2005, 14h12
  5. Activer/Desactiver une connexion au réseau local
    Par Yodagobah dans le forum MFC
    Réponses: 7
    Dernier message: 05/01/2005, 17h17

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