[swing] Comment regénérer un JPanel ?
Bonjour,
J'ai un JPanel qui suivant une certaine valeur contient des composants différents.
Lorsque j'appuie sur un bouton, je voudrai que ça passe de l'un à l'autre.
Malheureusement, je n'y arrive pas.
Voici un petit code qui simule ce que je veux faire.
Le but est d'arriver à remplir la méthode refreshPanel.
Merci d'avance
Alain :P
Code:
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
| import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class TestFrame extends JFrame {
private JLabel label1;
private JLabel label2;
private JLabel label3;
private JButton button1;
private JButton button2;
private JPanel mainPanel;
private boolean switcher = true;
public TestFrame(){
super();
initGUI();
getContentPane().add(mainPanel);
}
private void initGUI(){
System.out.println("### initGUI()");
mainPanel = initMainPanel();
}
private JPanel initMainPanel() {
System.out.println("### initMainPanel()");
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT,10,10));
if (switcher){
label1 = new JLabel("LABEL 1");
label1.setForeground(Color.ORANGE);
panel.add(label1);
label2 = new JLabel("LABEL 2");
panel.add(label2);
button1 = new JButton("BUTTON 1");
panel.add(button1);
button1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
refreshPanel();
}
});
switcher=false;
}else{
label3 = new JLabel("LABEL 3");
label3.setForeground(Color.BLUE);
panel.add(label3);
button2 = new JButton("BUTTON 2");
panel.add(button2);
button2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
refreshPanel();
}
});
switcher=true;
}
return panel;
}
private void refreshPanel(){
// ????
}
public static void main(String[] args) {
TestFrame frame = new TestFrame();
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.setBounds(200,200,250,150);
frame.setVisible(true);
}
} |