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 :
Classe Window :
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 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
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_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
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); } }
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 ?
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) { } }); } }
S'il manque quoique ce soit ou que mes explications ne sont pas claires, ne pas hésiter a réclameret si il y à des abberations dans mon code vous pouvez taper
(pas trop fort)
Merci
Partager