Salut à tous,
j'utilise Swing et j'ai rencontré des problèmes en voulant placer des composants de façon dynamique. J'ai crée un petit programme qui illustre le problème : en cliquant sur le bouton, le panel associé à la jframe doit changer, et avec lui la couleur de fond.
Code :
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- public class test extends JFrame implements ActionListener {
- //le bouton qui doit changer la couleur de fond
- JButton btn = new JButton ("change !" );
- //pnlA sera le panel rouge, pnlB le panel bleu, et aux contient
- //le panel courant
- JPanel pnlA = new JPanel (), pnlB = new JPanel (), aux;
- public test() {
- //affectation des couleurs
- this.pnlA.setBackground(Color.red);
- this.pnlB.setBackground(Color.blue);
- //ajout de l'écouteur d'événement
- this.btn.addActionListener(this);
- //je configure la jframe générale pour qu'elle affiche le panel en haut
- //et le bouton en bas
- super.getContentPane().setLayout(new BorderLayout ());
- //le premier panel à afficher sera le rouge; on peut mettre pnlB à la place
- aux = this.pnlA;
- //appelle de ma méthode
- this.affiche();
- super.setBounds(100, 100, 400, 400);
- super.setVisible(true);
- }
- public void affiche () {
- //je "nettoie" la frame générale
- super.getContentPane().removeAll();
- //j'ajoute le bouton en bas, et le panel courant au centre
- super.getContentPane().add(BorderLayout.SOUTH, this.btn);
- super.getContentPane().add(BorderLayout.CENTER, aux);
- //je tente de rafraichir la jframe
- super.repaint();
- //je change le panel courant pour changer de couleur au prochain appel
- if (this.aux.equals(this.pnlA)) this.aux = this.pnlB;
- else this.aux = this.pnlA;
- }
- //si l'utilisateur appuie sur le bouton
- public void actionPerformed (ActionEvent ae) {
- this.affiche();
- }
- static public void main (String[] args) {
- new test ();
- }
- }
|
Là quand je clique sur le bouton, le fond devient gris au lieu de prendre la couleur rouge ou bleu !
Quelqu'un peut m'aider ? Merci
Message édité par FrigoAcide le 24-02-2004 à 15:48:23