Bonsoir,
Voici mon problème :
J'ai une classe Window dérivée de JFrame, qui se présente comme ceci :
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 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'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).
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; } }
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 :
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?
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() { } }
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!
Partager