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 :

Jongler entre plusieurs JPanels avec une seule JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Points : 25
    Points
    25
    Par défaut Jongler entre plusieurs JPanels avec une seule JFrame
    Bonsoir,
    Voici mon problème :

    J'ai une classe Window dérivée de JFrame, qui se présente comme ceci :
    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
     
    package view;
     
    import javax.swing.JFrame;
     
    public class Window extends JFrame 
    {
    	private static final long serialVersionUID = 1L;
     
    	/* Constructeur */
    	public Window() 
    	{
    		super();
    		initialize();
    	}
     
    	/* Methode Initialize */
    	private void initialize() 
    	{
    		this.setSize(500, 400);
    	}
     
    }
    J'ai également une classe StartMenu dérivée de JPanel, qui se présente comme ceci :
    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
     
    package view;
     
    import javax.swing.JPanel;
    import java.awt.Dimension;
    import javax.swing.JButton;
    import java.awt.Point;
    import java.awt.Font;
     
    public class StartMenu extends JPanel 
    {
      /* Attributs */
      private static final long serialVersionUID = 1L;
      public JButton startUser = null;
      public JButton startAdmin = null;
     
      /* Constructeur */
      public StartMenu() 
      {
        super();
        initialize();
      }
     
      /* Methode Initialize */
      private void initialize() 
      {
        this.setSize(485, 335);
        this.setLayout(null);
        this.setPreferredSize(new Dimension(485, 335));
        this.add(getStartUser(), null);
        this.add(getStartAdmin(), null);
      }
     
      /* Methode getStartUser */
      //Retourne le bouton de demarrage Utilisateur
      private JButton getStartUser() 
      {
        if (startUser == null) 
        {
          startUser = new JButton();
          startUser.setPreferredSize(new Dimension(242, 92));
          startUser.setSize(new Dimension(242, 92));
          startUser.setFont(new Font("Dialog", Font.BOLD, 18));
          startUser.setText("Start DDSV v1.0");
          startUser.setLocation(new Point(119, 75));
        }
        return startUser;
      }
     
      /* Methode getStartAdmin */
      //Retourne le bouton de demarrage Admin
      private JButton getStartAdmin() 
      {
        if (startAdmin == null) 
        {
          startAdmin = new JButton();
          startAdmin.setPreferredSize(new Dimension(120, 45));
          startAdmin.setSize(new Dimension(120, 45));
          startAdmin.setText("Admin");
          startAdmin.setFont(new Font("Dialog", Font.BOLD, 18));
          startAdmin.setLocation(new Point(180, 210));
        }
        return startAdmin;
      }
    }
    J'aimerai à partir d'une instance de ma classe Window, jongler avec plusieurs instances de classe StartMenu (par exemple, car en réalité j'ai deux autres classes dérivées de JPanel qui contiennent des éléments différents de ceux de StartMenu).
    Pour être plus clair, j'aimerai qu'au lancement de mon application, j'affiche le Panel StartMenu, et qu'en fonction du clic sur l'un des deux boutons startUser ou startAdmin, je cache le panel StartMenu pour afficher un autre panel correspondant.

    J'aimerai faire tout cela par le biais de d'une classe Application, toute simple :
    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
     
    package view;
     
    import java.awt.event.*;  //Pour la gestion des evenements
     
    public class Application implements ActionListener
    {
      /* Attributs */
      public Window appliWin = null; 
      public StartMenu appliMenu = null;
     
      /* Constructeur */
      public Application()
      {  
        appliWin = new Window();
        appliMenu = new StartMenu();
        //Gestion des evenements des boutons du menu
        //appliMenu.startUser.addActionListener(this);  
        //appliMenu.startAdmin.addActionListener(this);
      }
     
      /* Programme principal */
      public static void main(String[] args) 
      {
        Application ddsv = new Application();
      }
     
      /* Implementation de la methode actionPerformed */
      public void actionPerformed(ActionEvent ev) 
      {
        String butName = ev.getActionCommand();
        //Si appui sur bouton utilisateur
        if(butName == "Start DDSV v1.0")
        {
     
        }
        //Si appui sur bouton admin
        else if(butName == "Admin")
        {
     
        }
      }
     
      /* Methode DisplayStartMenu */
      public void DisplayStartMenu()
      {
     
      }
     
    }
    Que dois-je faire pour rattacher l'instance appliMenu de StartMenu, à l'instance appliWin de Window, pour afficher le Panel appliMenu au lancement de mon application?

    Comment pourrais-je faire par la suite pour "cacher" appliMenu si l'un de ses deux boutons sont actionnés, afin d'afficher un autre panel à la place ?

    J'ai vraiment besoin d'orientation, je serais donc vraiment reconnaissant que vous m'éclairiez un peu sur la procédure à suivre et sur mes éventuelles (même certaines) bêtises.

    Merci d'avance!

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Tu vas peut-être pas apprécier, mais la réponse à ta question est relativement courte : java.awt.CardLayout.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Ok, j'étais persuadé qu'un gestionnaire de mise en forme tel que CardLayout ne gère que des composants de type boutons, champs de saisis...etc, et qu'un gestionnaire, étant rataché à un Container (comme JPanel), ne pouvait de ce fait pas gérer d'autres Container de cette façon.
    Cela resout donc mon deuxième problème, celui de savoir comment jongler entre mes différents JPanel.

    Mais pour le moment je ne sais toujours pas comment rattacher mon instance de StartMenu (JPanel) à mon instance de Window (JFrame)...

    Une sugestion ?...S'il vous plaît...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Ok, après avoir lu pas mal de doc sur le gestionnaire CardLayout, il me semble effectivement que ce dernier répond à tout mes problèmes.
    Je vais travailler dessus de ce pas.
    Merci beaucoup pour ce coup de pouce !

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    De rien

  6. #6
    Membre régulier Avatar de SpecialCharacter
    Inscrit en
    Mai 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 73
    Points : 72
    Points
    72
    Par défaut

    Et puis ça fera mon 50° post !

  7. #7
    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
    Appuies plutôt sur le bouton au lieu de le copier dans un post (je l'ai fait pour toi)
    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.

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

Discussions similaires

  1. Connexion entre 2 serveurs avec une seule base de données
    Par komat dans le forum Administration
    Réponses: 1
    Dernier message: 02/07/2013, 08h55
  2. Insérer plusieurs lignes avec une seule requête
    Par kyuuse1 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/06/2013, 09h06
  3. [XL-2007] Imprimer plusieurs onglets avec une seule requete
    Par Leithz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/05/2011, 12h59
  4. [WD-2003] Remplir plusieurs champs avec une seule entrée
    Par cariou76 dans le forum Word
    Réponses: 1
    Dernier message: 01/12/2009, 12h26
  5. CR XI : Renseigner plusieurs paramètres avec une seule valeur
    Par jpamy dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 30/01/2009, 14h22

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