Bonjour,
Je ne parvient pas à effectuer un changement de panel lorsque l'utilisateur clique sur un bouton.
J'ignore comment formuler le problème en une phrase alors je vais détailler.
J'ai :
Une classe 'login' qui contient des fonctions modifiant un JLayeredPane.
Une classe 'map' qui contient elle aussi des fonctions modifiant un JLayeredPane.
Une classe 'main' qui contient le JApplet et qui sert à écouter les boutons.
Au lancement du JApplet, la classe 'main' utilise la classe 'login' pour générer et récupérer un JLayeredPane, puis l'affiche.
Ce JLayeredPane contient un bouton, dont le MouseListener est réglé sur la classe 'main' pour tenter de remplacer le JLayeredPane actuel par celui de la classe 'map'.
Voici le code source :
main.java
login.java
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 package engine; import javax.swing.*; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class main extends JApplet implements MouseListener{ public login Login = new login(); public map CombatScene = new map(); public Container Applet = getContentPane(); public void init() { Login.initPanel(); Login.loginButton.addMouseListener(this); } public void start(){ getContentPane().add(Login.panel()); } public void mouseClicked(MouseEvent event) { if(Login.loginButton.isFocusOwner()){ CombatScene.printTest(); getContentPane().add(CombatScene.panel()); getContentPane().repaint(); //Login.panel().removeAll(); getContentPane().remove(Login.panel()); } } public void mouseEntered(MouseEvent event) { } public void mouseExited(MouseEvent event) { } public void mousePressed(MouseEvent event) { } public void mouseReleased(MouseEvent event) { } }
map.java
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 package engine; import javax.swing.*; import java.awt.event.*; public class login { public JLabel loginLabel = new JLabel(); public JPasswordField loginPassword = new JPasswordField(); public JButton loginButton = new JButton(); public JLayeredPane pane = new JLayeredPane(); public void initPanel(){ this.loginLabel.setBounds(10, 20, 205, 24); this.loginLabel.setText("Please enter your password :"); this.loginPassword.setBounds(10,44,200,24); this.loginButton.setBounds(140, 80, 50, 25); this.loginButton.setText("OK"); this.pane.add(this.loginLabel); this.pane.add(this.loginPassword); this.pane.add(this.loginButton); } public JLayeredPane panel(){ return this.pane; } }
Actuellement, cliquer sur le JButton de la classe 'login' fait disparaitre son JLayeredPane, mais n'affiche pas le nouveau.
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 package engine; import javax.swing.*; public class map { public JLayeredPane pane = new JLayeredPane(); public JLabel test = new JLabel(); public JLayeredPane panel(){ return this.pane; } public void printTest(){ this.test.setBounds(0,0,70,24); this.test.setText("Test !"); this.pane.add(this.test,1); this.pane.repaint(); } }
Sauriez vous comment procéder ?
Partager