IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Affichage stable JLabel


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Points : 17
    Points
    17
    Par défaut Affichage stable JLabel
    Bonjour,

    j'essaye de réaliser un chronomètre basique.
    J'affiche dans un JLabel mais vu que j'actualise régulièrement l'affichage, comme je centre les chiffres, ils se mettent "à bouger" (les chiffres ne prennent pas la meme place suivant les chiffres) dans le JLabel ce qui est très désagréble pour les yeux.

    Comment réaliser un affichage stable?
    Merci.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    dans ton label, ecris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <center>TON CHIFFRE</center>
    Ainsi il sera toujours centré, qu'il ai une unitée ou 10 chiffres après la virgule ^^

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Points : 17
    Points
    17
    Par défaut
    Désolé mais je ne comprends pas très bien.

    Quelques précisions : j'aligne le JLabel dans la fenetre avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chrono.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    Ensuite, c'est quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chrono.setText( String.valueOf(tps) );
    que l'affichage "bouge" en fonction de la taille des caractères des chiffres.

    C'est ça qu'il faut que je fasse ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chrono.setText("<center>"+String.valueOf(tps)+ "</center>");
    car ça ne donne rien à part afficher <center>.

    Aucun problème si je laisse l'alignement à gauche dans la fenêtre mais c'est moins joli.

    Merci.

  4. #4
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 64
    Points : 42
    Points
    42
    Par défaut
    essaie de mettre un layout,
    ->http://java.sun.com/docs/books/tutor...out/using.html
    ->http://java.sun.com/docs/books/tutor...ut/visual.html

    dans ton cas la plus performante doit etre border layout

    sinon met une taille par défaut à ton label ça évitera qu'il s'adapte au texte.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Points : 17
    Points
    17
    Par défaut
    Je centre déjà le JLabel avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Container c = getContentPane();
    chrono = new JLabel("");
    chrono.setSize(new Dimension(150, 80));	
    chrono.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    c.add("Center", chrono);
    Si je ne met pas le setHorizontal, le JLabel est centré à gauche.
    En fixant la taille ça ne résout rien.

    Une petite vidéo pour comprendre le problème (je ne sais pas si j'ai le droit, prévener moi et je retire le lien) :

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    je me demande si cela ne vient pas du fait que les millisecondes n'ont pas toujours deux chiffres...

    Il doit t'afficher par exemple au lieu de ce qui donne ce mouvement. Il faut donc forcer l'affichage du (ou des) 0 manquant(s)

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 17
    Points : 17
    Points
    17
    Par défaut
    Oui le problème venait bien du fait que je n'affichais pas sur un même nombre de caractères les secondes.

    J'ai été obligé de décomposer les secondes et les millisecondes et je formatte les nombres avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NumberFormat formatter = new DecimalFormat("00");
    Par contre je trouve que mon code fait un peu bidouille, je dois arrondir les millisecondes à la borne inférieure mais ça marche.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/10/2014, 10h22
  2. Affichage Texte JLabel
    Par Benduroy dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 09/07/2013, 08h17
  3. Non affichage de JLabel coloré
    Par hannibal.76 dans le forum Débuter
    Réponses: 2
    Dernier message: 27/12/2010, 15h01
  4. JLabel et ordre d'affichage (zorder)
    Par vcherrier dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 27/06/2006, 15h43
  5. Problème d 'affichage d une grile dans un JLabel
    Par louby dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 26/06/2006, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo