Barre d'état dans une JFrame

Signaler
Messages postés
72
Date d'inscription
mardi 16 avril 2002
Statut
Membre
Dernière intervention
12 février 2008
-
Messages postés
23
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
23 octobre 2003
-
Bonjour

Je voudrai savoir s'il est possible d'ajouter une barre d'état dans une JFrame et si oui je vous remercie d'avance de bien vouloir m'indiquer le procédé de sa création.

6 réponses

Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
11
Ok je vois,
Ton traitement est-il fait au sein d'un Thread, si ce n'est pas le cas je te conseille de le faire, car quand on clique sur un bouton, le repaint attends que l'action du bouton soit terminer, ou plutôt que les code dans actionPerfermed soit rendu en fin de code. Ce qui fait que laffichage n'est pas fait pendant ce temps là. Pour les traitements long on fait ainsi :

public void actionPerformed(ActionEvent ae)
{
   actionThread(ae);
}
private void actionThread(final ActionEvent ae)
{
   Thread thread = new Thread()
    {
        public void run()
        {
             traitementAction(ae);
         }
    };
   thread.start();
}
private void traimentAction(ActionEvent ae)
{
   setEtat("Traitement en cours ...");
   //Ton code de traitement
   setEtat(" ");
}


Est-ce clair ?

JHelp
Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
11
Un barre d'état est un simple message qui s'affiche en bas d'une fenêtre, c'est bien celà ?
Dans ce cas, il suffit d'ajouter un JLabel en bas, et de modifier son texte à volonté.
Par exemple :
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.BorderLayout;
//...
public class MaFenetre extends JFrame
{
    private JLabel barreEtat=new JLabel(" ");
    //...
    public MaFenetre()
    {
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(barreEtat,BorderLayout.SOUTH);
        //...
        pack();
        //...
    }

    /**
      * Change le texte de la barre d'état
      */
    public void setEtat(String etat)
    {
         barreEtat.setText(etat);
     }

     //...
}


JHelp
Messages postés
23
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
23 octobre 2003

Bonjour,

Effectivement, ça marche pas mal.
Mais j'ai un problème sur le comportement.
Dans mon cas, je souhaite changer le texte pour mettre un "Veuillez patienter ..." pendant que le système travaille.
Pas de chance, le message ne s'affiche que lorsque le système à finit de travailler...
Comment faire pour le faire s'afficher au début du traitement.
Merci.
Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
11
Bonjour,
Quel est le genre de traitement que tu effectues ?
As tu essayé en ajouter this.repaint(); ou this.validate(); ou les deux à la fin de la méthode setEtat ?
Utilises-tu setEtat ?
Ton traitement est efectué aprés que la JFrame soit afficher pour la première fois, avant ou pendant ?
Merci d'être un peu plus précis, car selon les réponses à ses questions la solution n'est pas tout à fait la même
JHelp
Messages postés
23
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
23 octobre 2003

J'affiche la JFrame où je demande la saisie d'un code.
Suite à un clic sur le bouton 'OK', j'effectue différents contrôles qui prennent 4-5 secondes.
C'est pendant ces traitements que j'aimerais que mon JLabel change.

this.repaint(); et this.validate(); ne donnent rien
Messages postés
23
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
23 octobre 2003

OK.

Je me doutais bien d'un truc comme ça.

Ca marche au poil.

Merci.