Valider l'ajout d'un composant

     

Voyez notre illustration ci-dessous. Il s'agit d'ajouter un composant graphique à un composant déjà achevé.

alt : l'applet n'est pas visible par votre navigateur(dans le menu Outils, Modules complémentaires, activer le plugin Java(TM) Platform SE 6 U32 6.0.320.5 s'il est désactivé)

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 :

  • le code de l'application
  • le code de l'applet
    final JButton bouton = new JButton("Ajouter"); : ce bouton doit être déclaré final car on l'utilise dans la classe interne. >texte.setOpaque(true); : par défaut, le fond d'un JLabel est transparent ; on souhaite ici le voir sur un fond jaune
    © Irène Charon, Télécom ParisTech 2011.