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
| // appeler le fichier Exemple089_RemplacerUnRadioButton.java
// par Nicolas_75
// le mardi 20 février 2007
// pour http://www.developpez.net/forums/showthread.php?t=282847
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Exemple089_RemplacerDynamiquementUnJRadioButton extends JFrame {
// méthode vidant un JPanel, et la remplissant
// par 3 JRadioButtons passés en paramètres :
private static ButtonGroup fillWithRadioButtons(JPanel panel, JRadioButton r1, JRadioButton r2, JRadioButton r3) {
panel.removeAll();
r1.setSelected(true);
ButtonGroup bg = new ButtonGroup();
bg.add(r1);
bg.add(r2);
bg.add(r3);
panel.add(r1);
panel.add(r2);
panel.add(r3);
return bg;
}
// panel contenant les 3 JRadioButtons :
private JPanel radioPanel;
// les 2 JRadioButtons "fixes" r1 et r3 :
private JRadioButton r1;
private JRadioButton r3;
/**
* Constructeur
*/
public Exemple089_RemplacerDynamiquementUnJRadioButton() {
// début de la mise en place de la JFrame :
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new BorderLayout());
// bouton du haut :
JButton topButton = new JButton("Cliquer ici pour modifier le RadioButton");
topButton.setForeground(Color.RED);
topButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
// si on appuie sur le bouton du haut...
// création d'un noubeau JRadioButton 2 :
JRadioButton r2bis = new JRadioButton("Radio 2bis");
// substitution au sein du panel :
Exemple089_RemplacerDynamiquementUnJRadioButton.this.fillWithRadioButtons(
Exemple089_RemplacerDynamiquementUnJRadioButton.this.radioPanel,
r1, r2bis, r3);
// mise à jour de l'affichage :
Exemple089_RemplacerDynamiquementUnJRadioButton.this.radioPanel.updateUI();
}
});
this.add(topButton, BorderLayout.NORTH);
// groupe de JRadioButtons :
r1 = new JRadioButton("Radio 1");
JRadioButton r2 = new JRadioButton("Radio 2");
r3 = new JRadioButton("Radio 3");
radioPanel = new JPanel();
// on remplit le panel avec des JRadioButtons :
ButtonGroup bg = fillWithRadioButtons(radioPanel, r1, r2, r3);
this.add(radioPanel, BorderLayout.CENTER);
// fin de la mise en place de la JFrame :
this.pack();
this.setLocationRelativeTo(null);
}
/**
* Main de lancement
* @param args arguments de la ligne de commande, inutilisés ici
*/
public static void main(String[] args) {
new Exemple089_RemplacerDynamiquementUnJRadioButton().setVisible(true);
}
} |
Partager