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

Composants Java Discussion :

menu dans un autre fichier


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 30
    Points
    30
    Par défaut menu dans un autre fichier
    Voilà mon fichier 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
     
    import java.awt.Menu;
    import java.awt.MenuBar;
    import java.awt.MenuItem;
     
    public class Barre_Menu extends Epargne
    {
     Barre_Menu()
     {
      //Construteur de menu
      MenuBar mb = new MenuBar();
      setMenuBar(mb);
      //Menu Fichier
      Menu m1 = new Menu("Fichier");
      mb.add(m1);
      //item Quitter
      mi = new MenuItem("Quitter");
      mi.addActionListener(this);
      m1.add(mi);
      //Menu Affichage
      Menu m2 = new Menu("Affichage");
      mb.add(m2);
      //item ....
      //Menu Aide
      Menu m3 = new Menu("?");
      mb.add(m3);
      //item menu Aide
      mi = new MenuItem("Aide");
      mi.addActionListener(this);
      m3.add(mi);
      m3.addSeparator();
      mi = new MenuItem("Version");
      mi.addActionListener(this);
      m3.add(mi);
     }
    }
    je voudrais rajouter ce menu dans un programme Epargne.java

    mais rien ne marche, le PC bloque pk .

    je arjoute comme ceci :

    Barre_Menu dd = new Barre_Menu();

  2. #2
    Membre habitué Avatar de dr00w
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 116
    Points : 136
    Points
    136
    Par défaut
    Ça fait longtemps que je n'ai pas travaillé avec awt pour l'interface mais à première vue, il te manques la déclaration :

    MenuItem mi;

    J'imagine que la classe Epargne herite de la classe awt.Frame puisque tu appelles setMenubar(mb). Il semble discutable que ta BarreMenu() hérite d'un Frame... Je déplacerais l'appel dans la classe Epargne.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    ca ne marche pas !!! quelqu'un pourrait me montré un morceau de code pour réussir ce que je veux faire ??

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    je n'ai point de code awt qui traîne mais juste pour vérification, Epargne étend bien Frame? car sinon il est normal que ça ne marche pas, seule une frame peut avoir une menubar
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    oui

    Epargne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class Epargne extends JFrame implements ActionListener,ItemListener
    de plus si je colle le code pour le menu dans Epargne tout marche....

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 27
    Points : 20
    Points
    20
    Par défaut
    Bin pk ne pas laisser le codage du menu dans Epargne ??

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    LE problème c'est la taille de mon Epargne.java

    j'en suis a 620 ligne et je voudrais le diviser en plusieurs sous fichier pour plus de lisibilité....

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    normal que ça ne marche pas
    Tu utilise une MenBar AWT avec un composant SWING cherche l'erreur.........
    Donc remplace ta MenuBar par une JMenuBar, ton Menu par un JMenu et tes MenuItems par des JMenuItems et ça devrait tout de même être un peu plus correct
    Sinon pour alléger ta classe essaye de passer par des design patterns de type factory et builder (c'est un peu dans l'idée de ce que tu fais pour tes menus) je crois qu'un des membres de developper a fait un cours sur le sujet dans la partie java du site il y a peu
    Va te renseigner dessus pour prendre des infos sur les design patterns
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    tu pourrais me montré le code au quel tu pense pour les menu car moi rien ne marche, ma machine plante a chaque fois.....

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    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
     
     
     
    public class Barre_Menu extends Epargne
    {
     Barre_Menu()
     {
      //Construteur de menu
      JMenuBar mb = new JMenuBar();
      setJMenuBar(mb);
      //Menu Fichier
      JMenu m1 = new JMenu("Fichier");
      mb.add(m1);
      //item Quitter
      JMenuItem mi = new JMenuItem("Quitter");
      mi.addActionListener(this);
      m1.add(mi);
      //Menu Affichage
      JMenu m2 = new JMenu("Affichage");
      mb.add(m2);
      //item ....
      //Menu Aide
      JMenu m3 = new JMenu("?");
     
      //item menu Aide
      JMEnuItem mAide = new JMenuItem("Aide");
      mi.addActionListener(this);
      m3.add(mAide);
      m3.addSeparator();
      JMenuItem mVersion = new JMenuItem("Version");
      mi.addActionListener(this);
      m3.add(mi);
      mb.add(m3);
      super(tesArgumentsHabituels);
     }
    }
    Mais là au niveau conception je vois pas trop ce que tu veux faire, car la classe que tu a créé est fille d'Epargne donc lancera Epargne, si tu as déja une instance d'Epargne, il est normal que ça ne marche pas

    Sinon essaye de passer par un motif builder qui aurait pour prototype de méthode de création de tes menus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class MenuBuilder{
      private Epargne instance;
      public MenuBuilder(Epargne e) {
         this.instance = e;
      }
      public addMenuBar(){
       // tu mettra ici une version légèrement modifiée du code donné ci
       //dessus
      }
    }
    Ensuite il te suffira de faire dans Epargne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MenuBuiler mb = new MenuBuilder(this);
    mb.addMenuBar();
    Voila
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  11. #11
    Membre habitué Avatar de dr00w
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 116
    Points : 136
    Points
    136
    Par défaut
    Voici un code qui te donneras un point de départ :

    //fichier GuiBuilder.java

    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
     
     
     
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
     
     
     
    public class GuiBuilder {
     
        public static JMenuBar creerMenuBar(Epargne frame) {
     
    //      Construteur de menu
            JMenuBar mb = new JMenuBar();
            JMenuItem mi;
     
            //Menu Fichier
            JMenu m1 = new JMenu("Fichier");
            mb.add(m1);
            //item Quitter
            mi = new JMenuItem("Quitter");
            mi.addActionListener(frame);
            m1.add(mi);
            //Menu Affichage
            JMenu m2 = new JMenu("Affichage");
            mb.add(m2);
            //item ....
            //Menu Aide
            JMenu m3 = new JMenu("?");
            mb.add(m3);
            //item menu Aide
            mi = new JMenuItem("Aide");
            mi.addActionListener(frame);
            m3.add(mi);
            m3.addSeparator();
            mi = new JMenuItem("Version");
            mi.addActionListener(frame);
            m3.add(mi); 
     
            return mb;
        }
     
    }
    //fichier Epargne.java
    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
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenuBar;
    import javax.swing.JPanel;
     
    public class Epargne extends JFrame implements ActionListener{
     
     
        /**
         * @param string
         */
        public Epargne(String titre) {
            super(titre);
            creerGui();
            pack();
        }
     
        /**
         * 
         */
        private void creerGui() {
     
            //menubar
            JMenuBar mb = GuiBuilder.creerMenuBar(this);
            setJMenuBar(mb);
            //panel
            JPanel panel = new JPanel();
            JButton bt = new JButton("Dummy");
            panel.add(bt);
            getContentPane().add(panel);
        }
     
        /**
         * @param args
         */
        public static void main(String[] args) {
     
            Epargne fn = new Epargne("Mon titre");
            fn.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            fn.setVisible(true);
     
        }
     
        /* (non-Javadoc)
         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
         */
        public void actionPerformed(ActionEvent e) {
     
            // TODO Auto-generated method stub
     
        }
     
    }

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Merci ca marche

    Existe t*il un court sur ce site qui parle de cette ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public static JMenuBar creerMenuBar(Epargne frame)
    je n'ai jamais vue ces écriture....

    merci

  13. #13
    Membre habitué Avatar de dr00w
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 116
    Points : 136
    Points
    136
    Par défaut
    Citation Envoyé par florantine
    Merci ca marche

    Existe t*il un court sur ce site qui parle de cette ca :

    je n'ai jamais vue ces écriture....

    merci
    Fais une recherche sur Google "Design Patterns" tu vas avoir le choix. Si tu lis l'anglais, le livre "Head First Design Patterns" chez O'reilly est excellent.

    http://www.oreilly.com/catalog/hfdesignpat/

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    et le static signifie tout miplement que tu peux accéder à une méthode d'une classe sans avoir besoin d'instancier celle ci
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Voilà je me suis servis de vos exemple pour déplacer aussi les composant :

    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
     
    import java.awt.*;
    import javax.swing.*;
     
    public class Composant {
    	public static JPanel CreerPlacerComposant(Epargne frame) {
    		JPanel pane = new JPanel();
    		GridBagLayout gridbag = new GridBagLayout();
    		GridBagConstraints constraints = new GridBagConstraints();
    		buildConstraints bc1 = new buildConstraints();
    		pane.setLayout(gridbag);
     
    		JLabel lb1 = new JLabel("Somme Départ : ");
    		JLabel lb2 = new JLabel("Taux de l'épargne : ");
    		JLabel lb3 = new JLabel("Durée de l'épargne : ");
     
    		JButton bt1 = new JButton("Calculer");
     
    		JTextField tf1 = new JTextField();
    		JTextField tf2 = new JTextField();
     
    		JComboBox cbb1 = new JComboBox();
     
    		bc1.PlacerComposant(constraints, 0, 0, 1, 1, 100, 100);
    		constraints.fill = GridBagConstraints.HORIZONTAL;
    		constraints.fill = GridBagConstraints.EAST;
    		gridbag.setConstraints(lb1, constraints);
    		pane.add(lb1);
     
    		bc1.PlacerComposant(constraints, 1, 0, 1, 1, 100, 100);
    		constraints.fill = GridBagConstraints.HORIZONTAL;
    		gridbag.setConstraints(tf1, constraints);
    		pane.add(tf1);
     
    		bc1.PlacerComposant(constraints, 0, 1, 1, 1, 0, 100);
    		constraints.fill = GridBagConstraints.HORIZONTAL;
    		constraints.fill = GridBagConstraints.EAST;
    		gridbag.setConstraints(lb2, constraints);
    		pane.add(lb2);
     
    		bc1.PlacerComposant(constraints, 1, 1, 1, 1, 0, 100);
    		constraints.fill = GridBagConstraints.HORIZONTAL;
    		gridbag.setConstraints(tf2, constraints);
    		pane.add(tf2);
     
    		bc1.PlacerComposant(constraints, 0, 2, 1, 1, 0, 100);
    		constraints.fill = GridBagConstraints.HORIZONTAL;
    		constraints.fill = GridBagConstraints.EAST;
    		gridbag.setConstraints(lb3, constraints);
    		pane.add(lb3);
     
    		for (int i = 1; i <= 20; i++) {
    			cbb1.addItem("" + i);
    		}
    		bc1.PlacerComposant(constraints, 1, 2, 1, 1, 0, 100);
    		constraints.fill = GridBagConstraints.HORIZONTAL;
    		gridbag.setConstraints(cbb1, constraints);
    		cbb1.addItemListener(frame);
    		pane.add(cbb1);
     
    		bc1.PlacerComposant(constraints, 0, 3, 1, 1, 0, 100);
    		constraints.fill = GridBagConstraints.NONE;
    		gridbag.setConstraints(bt1, constraints);
    		bt1.addActionListener(frame);
    		pane.add(bt1);
     
    		return pane;
    	}
    }
    Quand j'appuyer sur le bouton OK, récupérer la valeur de tf1 mais comment peut on récupérer cette valeur depuis Epargne ??

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    la tu vas peut être un peu loin dans l'application du pattern builder car tu perds la main sur tes composants, un bon example d'utilisation de builder est trouvable dans le pdf suivant: http://jgoodies.com/articles/forms.pdf dans les exemples 5 et 6(pages 8 et 9)

    Tu n'as pas le code du builder mais la façon de l'utiliser, ce qui est tout aussi important
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  17. #17
    Membre habitué Avatar de dr00w
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 116
    Points : 136
    Points
    136
    Par défaut
    Comme te le disait sinok, tu n'as pas choisis le bon pattern pour ce que tu veux faire. Il y a toujours moyen de contourner ça, mais il y a plus simple. Tu n'as qu'à faire une sous classe de JPanel avec des accesseurs pour tes champs.

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

Discussions similaires

  1. [VBA] Recherche d'une valeur dans un autre fichiers puis
    Par Nicos77 dans le forum Général VBA
    Réponses: 11
    Dernier message: 24/03/2006, 11h24
  2. Récuperer Id dans un autre fichier
    Par Invité dans le forum Langage
    Réponses: 22
    Dernier message: 05/03/2006, 17h13
  3. Shell - Récupérer une variable dans un autre fichier
    Par claralavraie dans le forum Linux
    Réponses: 9
    Dernier message: 11/01/2006, 16h25
  4. Importer le contenu un fichier xml dans un autre fichier xml
    Par gedeon555 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/07/2005, 11h49
  5. Inserer Un Menu dans un autre en execution
    Par apt dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/08/2002, 11h22

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