Voyez notre illustration ci-dessous. Il s'agit d'ajouter un composant graphique à un composant déjà achevé.
L'instruction validate() de la classe java.awt.Container doit être utilisée lorsqu'on veut ajouter ou retirer un composant à un composant C (héritant de la classe Container) lorsque cette modification doit intervenir après la construction du composant C . L'instruction validate() sert à redessiner l'ensemble du composant C en conséquence. Si cette instruction n'était pas utilisée ici, le JLabel n'apparaîtrait pas lorsque l'on clique sur le bouton. On peut aussi utiliser dans certains cas la méthode pack() qui redimensionne le composant et qui dans ce cas rend aussi visible le sous-compoosant.
Voici le code de l'application effectuant ce que vous voyez ci-dessus.
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
public class Ajout extends JFrame {
Ajout() {
super("ajout");
final JButton bouton = new JButton("Ajouter");
setLayout(new BorderLayout(5, 5));
add(bouton, BorderLayout.NORTH);
bouton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == bouton) {
JLabel texte = new JLabel("bonjour");
texte.setBackground(Color.YELLOW);
texte.setOpaque(/b>true/b>);
add(texte, BorderLayout.SOUTH);
validate();
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(300, 400);
setSize(200, 200);
setVisible(true);
}
}
class EssaiAjout {
public static void main(String[] arg) {
new Ajout();
}
}
Vous pouvez voir :