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

 Java Discussion :

Bascule entre JPanels


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 2
    Par défaut Bascule entre JPanels
    Bonjour,

    Débutant avec Java, je rencontre plusieurs difficultés. En parcourant le net, les divers forums et tutoriels j'arrive néanmaoins à avancer doucement.
    Cependant, depuis quelques jours, je bloque sur un problème tout bête.

    Je souhaite créer une application toute simple de gestion d'évenement.
    J'ai pour cela :
    • Une classe Main qui permet de lancer l'application.
    • Une classe Window (héritant de JFrame) qui est la fenêtre principale avec un menu classique.
    • Une classe GUI_EvtList (héritant de JPanel) qui permet de lister les évenements.
    • Une classe GUI_EvtAdd (héritant de JPanel) qui permet d'ajouter un évenement.
    • Une classe GUI_Evtupdate (héritant de JPanel) qui permet de modifier un évenement.


    Le problème que je rencontre est le suivant, j'arrive via le menu a passer d'un JPanel a un autre, cependant je n'y arrive pas en utilisant directement les boutons se trouvant sur les JPanels.
    Par exemple je souhaiterais que lorsque je clic sur le bouton "Ajouter" se trouvant sur le JPanel GUI_EvtList, je bascule sur le JPanel GUI_EvtAdd.

    Voici les classes, je ne mets que Main, Window, GUI_List et GUI_EvtAdd, le principe étant le même pour GUI_EvtUpdate, a cela prêt qu'il faudra que j'arrive a faire passer l'identifiant de l'évenement.

    Classe Main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Main {
    	public static void main(String[] args) {
     
            Window fenetre = new Window();
            fenetre.setVisible(true);
        }
    }
    Classe Window :
    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
    86
    87
    88
    89
    90
    91
    92
     
     
    public class Window extends JFrame {
     
        private JPanel contentPane  = new JPanel();
        private JPanel cards; 
     
        final static String PANELEVTLIST = "PANELEVTLIST";
        final static String PANELEVTADD = "PANELEVTADD";
     
        private JMenuItem mntmEvtsListe;
        private JMenuItem mntmEvtsAjouter;
     
    	public Window() {
    		super();
    		build();
    	}
     
    	private void build(){
     
    		setTitle("Gestion de evenements");
    		setSize(800, 600);
    		setLocationRelativeTo(null);
    		setResizable(false);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		// Barre de menus
    		JMenuBar menuBar = new JMenuBar();
    		setJMenuBar(menuBar);
     
    		// Menu Fichier
    		JMenu mnFichier = new JMenu("Fichier");
    		menuBar.add(mnFichier);
     
    		// Sous-Menu Fichier->Quitter
    		JMenuItem mntmQuitter = new JMenuItem("Quitter");
    		mntmQuitter.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				System.exit(0);
    			}
    		});
    		mnFichier.add(mntmQuitter);
     
    		// Menu Evenements
    		JMenu mnEvnements = new JMenu("Evenements");
    		menuBar.add(mnEvnements);
     
    		// Sous-Menu Evenements->Liste
    		mntmEvtsListe = new JMenuItem("Liste");
    		mntmEvtsListe.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				CardLayout cl = (CardLayout)(cards.getLayout());
    				cl.show(cards, PANELEVTLIST);
    			}
    		});
    		mnEvnements.add(mntmEvtsListe);
     
    		// Sous-Menu Evenements->Ajouter
    		mntmEvtsAjouter = new JMenuItem("Ajouter");
    		mntmEvtsAjouter.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent arg0) {
    				CardLayout cl = (CardLayout)(cards.getLayout());
    				cl.show(cards, PANELEVTADD);
    			}
    		});
     
    		mnEvnements.add(mntmEvtsAjouter);
     
    		contentPane.setBackground(Color.WHITE);
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		contentPane.setLayout(new BorderLayout(0, 0));
    		setContentPane(contentPane);
    		this.addComponentToPane(contentPane);
     
    	}
     
    	public void addComponentToPane(Container pane) {
     
            JPanel comboBoxPane = new JPanel(); //use FlowLayout
     
            GUI_EvtList cardEvtList = new GUI_EvtList();
            GUI_EvtAdd cardEvtAdd = new GUI_EvtAdd();
     
            //Create the panel that contains the "cards".
            cards = new JPanel(new CardLayout());
            cards.add(cardEvtList, PANELEVTLIST);
            cards.add(cardEvtAdd, PANELEVTADD);
     
            pane.add(comboBoxPane, BorderLayout.PAGE_START);
            pane.add(cards, BorderLayout.CENTER);
        }
    }
    Classe GUI_EvtList :
    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
     
    public class GUI_EvtList extends JPanel {
     
    	private JTable tabEvtList;
    	private JPanel pane;
     
    	public GUI_EvtList() {
     
    		setLayout(new BorderLayout(0, 0));
    		setPreferredSize(new Dimension(700,500));
     
    		//############
    		// Header
    		//############
    		JPanel pheader = new JPanel();
    		add(pheader, BorderLayout.NORTH);
     
    		JLabel lblTitre = new JLabel("Liste des evenements");
    		pheader.add(lblTitre);
     
    		//############
    		// Body
    		//############
    		JPanel pbody = new JPanel();
    		pbody.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
    		add(pbody, BorderLayout.CENTER);
     
    		//Les donnees du tableau
    		Object[][] data  = {
    		{"ID N1", "Evenement N1", "01/07/2013"},
    		{"ID N2","Evenement N2", "23/11/2013"},
    		{"ID N3","Evenement N3", "13/03/2014"},
    		{"ID N4","Evenement N4", "30/09/2014"}
    		};
     
    		//Les titres des colonnes
    		String title[] = {"ID","Evenement", "Date"};
    		pbody.setLayout(new BorderLayout(0, 0));
    		tabEvtList = new JTable(data, title);
     
    		//Nous ajoutons notre tableau à notre contentPane dans un scroll
    		//Sinon les titres des colonnes ne s'afficheront pas !
    		JScrollPane jsEvtList = new JScrollPane(tabEvtList);
    		jsEvtList.setPreferredSize(new Dimension(600, 300));
    		pbody.add(jsEvtList);
     
    		//############
    		// Footer
    		//############
    		JPanel pfooter = new JPanel();
    		add(pfooter, BorderLayout.SOUTH);
     
    		JButton btnAjouter = new JButton("Ajouter");
    		btnAjouter.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
     
    			}
    		});
     
    		pfooter.add(btnAjouter);
     
    		JButton btnModifier = new JButton("Modifier");
    		btnModifier.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    			}
    		});
    		pfooter.add(btnModifier);
     
    		JButton btnSupprimer = new JButton("Supprimer");
    		btnSupprimer.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
     
    			}
    		});
    		pfooter.add(btnSupprimer);
    	}
    }
    Classe GUI_EvtAdd :
    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.BorderLayout;
     
     
    public class GUI_EvtAdd extends JPanel {
     
    	private JTextField txtNomEvt;
    	private JTextField txtDateEvt;
     
    	public GUI_EvtAdd() {
     
    		setLayout(new BorderLayout(0, 0));
    		setPreferredSize(new Dimension(700,500));
     
    		//############
    		// Header
    		//############
    		JPanel pheader = new JPanel();
    		add(pheader, BorderLayout.NORTH);
     
    		JLabel lblTitre = new JLabel("Ajout d'un evenement");
    		pheader.add(lblTitre);
     
    		//############
    		// Body
    		//############
    		JPanel pbody = new JPanel();
    		pbody.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
    		add(pbody, BorderLayout.CENTER);
    		pbody.setLayout(null);
     
    		JPanel pinfos = new JPanel();
    		pinfos.setLayout(null);
    		pinfos.setBorder(UIManager.getBorder("TitledBorder.border"));
    		pinfos.setBounds(140, 170, 420, 100);
    		pbody.add(pinfos);
     
    		JLabel lblNomEvt = new JLabel("Nom :");
    		lblNomEvt.setBounds(60, 24, 70, 15);
    		pinfos.add(lblNomEvt);
     
    		JLabel lblDateEvt = new JLabel("Date :");
    		lblDateEvt.setBounds(60, 63, 70, 15);
    		pinfos.add(lblDateEvt);
     
    		txtNomEvt = new JTextField();
    		txtNomEvt.setBounds(169, 22, 200, 19);
    		pinfos.add(txtNomEvt);
    		txtNomEvt.setColumns(10);
     
    		txtDateEvt = new JTextField();
    		txtDateEvt.setBounds(169, 61, 200, 19);
    		pinfos.add(txtDateEvt);
    		txtDateEvt.setColumns(10);
     
    		//############
    		// Footer
    		//############
    		JPanel pfooter = new JPanel();
    		add(pfooter, BorderLayout.SOUTH);
     
    		JButton btnAjouter = new JButton("Ajouter");
    		pfooter.add(btnAjouter);
    		btnAjouter.addActionListener(new ActionListener() {
                            public void actionPerformed(ActionEvent e) {	    	 
    	      	}
    	    });
    	}
    }
    La question est en fait de savoir comment mettre en place le même principe que le fonctionnement des menus, mais sur les boutons de mes différents JPanel ?

    S'il manque quoique ce soit ou que mes explications ne sont pas claires, ne pas hésiter a réclamer et si il y à des abberations dans mon code vous pouvez taper (pas trop fort)
    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    Tu peux t'en sortir en passant ta Window (ou juste cards) au constructeur de tes autres fenetres GUI_EvtList , .....Ainsi tu auras accès à cards et donc tu pourraschanger la fenêtre à afficher.

    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
     
    public class GUI_EvtList extends JPanel {
     
    	private JTable tabEvtList;
    	private JPanel pane;
            private Window window;
     
    	public GUI_EvtList(Window win) {
                    window = win;
    		setLayout(new BorderLayout(0, 0));
    		setPreferredSize(new Dimension(700,500));
                    ............
     
    		btnAjouter.addActionListener(new ActionListener() {
                            public void actionPerformed(ActionEvent e) {
    	    	                  CardLayout cl = (CardLayout)(window.cards.getLayout());
    				  cl.show(window.cards, PANELEVTADD);
    	      	        }
    	        });

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 2
    Par défaut
    Bonjour,

    Merci beaucoup ludomacho, ca fonctionne parfaitement bien, il suffit parfois de pas grand chose, j'avais essayé de passer ma fenêtre, mais pas correctement.


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

Discussions similaires

  1. basculer entre deux form?
    Par UnSofteuxAmateur dans le forum Windows Forms
    Réponses: 9
    Dernier message: 04/07/2007, 12h35
  2. Réponses: 4
    Dernier message: 13/06/2006, 13h45
  3. Différence entre Jpanel, JFrame, Frame, Panel
    Par Invité dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 12/06/2006, 22h51
  4. [vb.net][Thread] Basculer entre Thread
    Par arnolem dans le forum Windows Forms
    Réponses: 5
    Dernier message: 06/01/2006, 18h59
  5. basculer entre 2 blocks visible et invisible
    Par popressay dans le forum Oracle
    Réponses: 7
    Dernier message: 27/08/2004, 16h40

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