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 :

Appel d'une méthode pour afficher du contenu au sein d'une fenêtre (Débutant)


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 28
    Points
    28
    Par défaut Appel d'une méthode pour afficher du contenu au sein d'une fenêtre (Débutant)
    Bonjour, je débute en programmation Java et je rencontre quelques problèmes avec le développement
    J'ai déja posté ce sujet sur le forum SWT, mais il s'agissait d'une erreur

    d'applicationgs graphiques et j'aurais besoin de votre aide, rapidement, si possible.

    J'ai développé une classe MaFenetre qui met en place une fenêtre Windows avec un menu (Fichier,

    Edition) et une classe Fonctionnalites qui propose différentes méthodes destinés à l'application

    (formulaire de saisie....)

    Les méthodes de cette classe Fonctionnalités marchent correctement (elles ont été testés non pas

    en tant que méthode de Fonctionnalités, mais au sein du constructeur de ma fenêtre).
    Mais lorsque celle-ci sont des méthodes de Fonctionnalités, elle ne fonctionnent pas. En effet, quand

    on les appellent, elle ne marchent et leur contenu (formulaire de saisie avec des JButtons, Jlabel,

    JTextField) n'apparaient pas à l'écran

    Faudrait t'il passer quelque chose en paramètre lors de l'appel de l'une des méthodes ????
    Est-ce un problème lié à l'affectation à la fenêtre mère, getcontentpane ??????
    Je ne pense pas que c'est trop dur, mais bon !

    Merci d'avance

    Voici, le code de mes classes (c'est un peu long, excusez moi)

    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
     
    import javax.swing.*;
    import java.awt.*; // nécéssaire pour la classe Container
    import java.awt.event.*; // nécessaire pour ActionListener, WindowListener
    import java.lang.*;
     
    public class MaFenetre extends JFrame implements ActionListener, WindowListener {
     
             public static void main (String[] args)
            { JFrame FenetreAppli = new MaFenetre();
              FenetreAppli.setVisible(true);
              FenetreAppli.show();  }
     
            // Déclaration d'une variable funct de type Fonctionnalites
            Fonctionnalites funct;
     
            // Constructeur de la fenêtre
            public MaFenetre() {
     
       		// Déclaration item Menu
    		MenuItem mi;
     
                    // Caractéristiques de la fenêtre
                    setSize(350,200);
                    setLocation(300,300);
                    setTitle("Bibliothèque");
                    setResizable(false);
                    addWindowListener(this);
                    funct = new Fonctionnalites();
     
                    // Construction du menu
                     MenuBar mb=new MenuBar();
                     setMenuBar(mb);
                               //menu Fichier
                              Menu m1=new Menu("Fichier");
                              mb.add(m1);
                                       // Item Quiter
                                       mi=new MenuItem("Quitter");
                                      mi.addActionListener(this);
                                       m1.add(mi);
     
                              // menu Edition
                              Menu m2=new Menu("Edition");
                              mb.add(m2);
                                      // Item Ajouter Livre
                                      mi=new MenuItem("Ajouter Livres");
                                      mi.addActionListener(this);
                                      m2.add(mi);
                                       //Item Lister Bibliotheque
                                      mi=new MenuItem("Lister Bibliothèque");
                                      mi.addActionListener(this);
                                      m2.add(mi);
     
                    // gestion evenementielle de la fermeture de la fenêtre
                   addWindowListener(new WindowAdapter()
                   {public void windowClosing(WindowEvent e)
                     {System.exit(0);}
                   } ) ;
            }
     
     
            public void actionPerformed(ActionEvent e) {
     
            if (e.getActionCommand().equals("Quitter"))
              {System.exit(0);}
            else if (e.getActionCommand().equals("Ajout Livres"))
              {funct.Ajout();
              }
     
      }

    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
    import javax.swing.*;
    import java.awt.*; // nécéssaire pour la classe Container
    import java.awt.event.*; // nécessaire pour ActionListener
     
     
    public class Fonctionnalites  extends JFrame implements ActionListener, MouseListener {
     
            Bibliotheque biblio = new Bibliotheque();
     
           // Déclération du panel
            JPanel panneauSaisie;
            JPanel panneauLabel;
     
           Container Fenetre1 = getContentPane(); // Fenetre1 : référence au contenu de la fenêtre1
            // Déclaration des boutons de la fenêtre
            public JButton AddButton;
     
            // Déclaration des zones de saisie de la fenetre
            public JTextField SaisieTitre;
            public JTextField SaisieAuteur;
     
     
            // Déclaration des etiquettes
            private JLabel JLabelTitre;
            private JLabel JLabelAuteur;
     
     
    // Constructeur
      	public Fonctionnalites()
      	{addMouseListener(this);
            setBackground(Color.white);}
     
    	// Méthode Ajout
      	public void Ajout()
      	{
                          // JTextField
              SaisieTitre = new JTextField(10);
              SaisieAuteur = new JTextField(10);
     
     
              //JLabel
              JLabelTitre = new JLabel("Titre : ", JLabel.CENTER);
              JLabelAuteur = new JLabel("Auteur : ", JLabel.CENTER);
     
              // Boutons
              AddButton = new JButton("OK");
     
              // Panels
              panneauSaisie = new JPanel(new GridLayout(5,1,5,5));
              panneauLabel = new JPanel(new GridLayout(5,1,5,5));
     
              // Fenêtre et mise en forme Fenetre1
              Fenetre1.setLayout(new BorderLayout(15,15));  // Choix d'un gestionnaire de mise en forme
              Fenetre1.applyComponentOrientation( ComponentOrientation.LEFT_TO_RIGHT);
     
                      // Ajouts des différents composants aux Panels
                      panneauLabel.add(JLabelTitre);
                      panneauSaisie.add(SaisieTitre);
     
                      panneauLabel.add(JLabelAuteur);
                      panneauSaisie.add(SaisieAuteur);
     
                        //Fenetre1
                      Fenetre1.setVisible(true);
                      Fenetre1.add(panneauLabel, BorderLayout.WEST);
                      Fenetre1.add(panneauSaisie, BorderLayout.CENTER);
                      Fenetre1.add(AddButton, BorderLayout.SOUTH);
     
              // Gestion Evenements
              AddButton.addActionListener(this); // La fenêtre écoute AddButton;
     
    }

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    bonjour,
    d'ailleur t as pas mis la classe bibliotheque;
    essaye de mettre la methode "Ajout" hors le constructeur et la declarer public

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Salut.
    Désolé, j'ai pas tout bien compris dans ton code.
    Tu as 2 fenêtres séparées, ou Fonctionnalités est insérée dans maFenetre ?
    Dans le 1er cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fenetre1.setVisible(true);
    Tu rends le contentPane visible, mais ta fenêtre ???

    Dans le 2ème cas, Fonctionnalités devrait plutôt étendre un JPanel que tu places dans maFenetre. Tu demandes un Container en paramêtre de ta méthode ajout, pour ajouter ton objet Fonctionnalites à ce Container. Ex :
    Code dans Fonctionnalites : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void ajout (Container cont) {
         //Tu crées tes composants et les ajoutes dans Fonctionnalites
         cont.add(this);
    }
    Code dans maFenetre : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    else if (e.getActionCommand().equals("Ajout Livres"))
              {funct.Ajout(getContentPane());
              }
    Autres remarques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    addWindowListener(this);
    //...
    //plus loin :
                   addWindowListener(new WindowAdapter()
                   {public void windowClosing(WindowEvent e)
                     {System.exit(0);}
                   } ) ;
    Pourquoi appelles-tu 2 fois la méthode ?
    Et si c'est juste pour que ton programme s'arrête à la fermeture de ta fenêtre, il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Je continue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (e.getActionCommand().equals("Quitter"))
              {this.dispose();
                // A la place de System.exit(0)
              }
    Mais bon, là je chipotte

    Enfin, d'une manière générale, il vaut mieux déclarer et ajouter les composants du plus spécifique au plus général. Ex :
    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
    JButton monBouton_1 = new JButton();
    JButton monBouton_2 = new JButton();
     
    JPanel panelBoutons = new JPanel(new FlowLayout());
    panelBoutons.add(monBouton_1);
    panelBoutons.add(monBouton_2);
     
    //etc.
     
    JTextField champPrincipal = new JTextField();
     
    getContentPane().add(panelBouton, JBorderLayout.SOUTH);
    getContentPane().add(champPrincipal, JBorderLayout.CENTER);
     
    pack();
    setVisible(true);
    Si tu fais l'inverse, ça peut jouer des tours à l'affichage, étant donné que tu modifies un panneau après l'avoir ajouté dans ta fenêtre. Et c'est ce que tu fais, lorsque tu déclares ta barre de menu et ses somposants. Mais bon, peut-être que là aussi, je chipotte

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/02/2013, 15h10
  2. Réponses: 1
    Dernier message: 05/03/2012, 15h04
  3. [VBA-E] Dbl Click sur une case pour afficher le contenu d'un USERFORM
    Par dado91400 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2007, 10h41
  4. Réponses: 18
    Dernier message: 12/06/2006, 09h39
  5. [SWING][THREAD]Méthodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/05/2004, 10h35

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