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

AWT/Swing Java Discussion :

Problème police de caractère dans JProgressBar


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 73
    Points
    73
    Par défaut Problème police de caractère dans JProgressBar
    Bonjour,
    J'ai développé une barre de progression modifiée dans laquelle j'ai placé le texte du pourcentage tout à droite. Le problème est que je n'arrive pas à modifier la police de caractère de ce pourcentage. Pourtant j'ai essayé de mettre une taille de police de 500, sans effet !!!

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    private class EKProgressBarUI extends BasicProgressBarUI {
     
            /** Dessin de la barre de progression dans l'état indéterminé. */
            @Override
            protected void paintDeterminate(Graphics g, JComponent c) {
                Graphics2D g2d = (Graphics2D) g;
                g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
     
                // récupération de la longueur de la barre de progression
                int length = ( ((JProgressBar) c).getValue() * (getWidth() - 56) ) / 100;
                if(length < 0)
                    length = 0;
     
                // image de fond de la progressBar
                g2d.drawImage(progressBarBackgroundLeft.getImage(), 0, 0, 2, 16, null);
                g2d.drawImage(progressBarBackgroundCenter.getImage(), 2, 0, getWidth()-53, 16, null);
                g2d.drawImage(progressBarBackgroundRight.getImage(), getWidth()-53, 0, 2, 16, null);
     
                // texte indiquant le pourcentage
                g2d.setColor(textColor);
                g2d.setFont(font);
                g2d.drawString(getValue() + "%", getWidth()-40, 14);
     
                // image du curseur
                g2d.drawImage(progressBarCursorLeft.getImage(), 0, 0, 3, 16, null);
                g2d.drawImage(progressBarCursorCenter.getImage(), 3, 0, length, 16 ,null);
                g2d.drawImage(progressBarCursorRight.getImage(), length + 3, 0, 3, 16, null);
            }
     
     
            /** Fonction servant à la mise a jour de l'affichage. */
            @Override
            public void update(Graphics g, JComponent c) {
                repaint();
                paintDeterminate(g, c);
                g.dispose();
            }
        }

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    Comment crées tu l'objet font?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 73
    Points
    73
    Par défaut
    et bien j'utilise la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Font font = new Font(null, Font.BOLD, 25);
    mais quand j'utilise la méthode g2d.setFont(font); cette commande n'est pas prise en compte et je ne sais pas pourquoi

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    J'avais pas vu, mais les lignes de ta méthode update sont douteuses

    public void update(Graphics g, JComponent c) {
    repaint();
    paintDeterminate(g, c);
    g.dispose();
    }
    =>repaint();
    Faire un repaint dans une methode update(), ca n'a pas de sens. update() est appelée parce que tu fais un repaint.
    =>g.dispose();
    C'est pas toi qui a cree le graphique, ce n'est pas a toi de le detruire.

    Ca ne va s'en doute pas corriger ton probleme, mais ce sera toujours des sources d'erreur en moins.

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah en même temps si tu ne précises pas un nom de font spécifique, java ne pourra pas le faire pour toi. (le premier paramètre de font correspond au nom de la font à utiliser Arial & cie)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 73
    Points
    73
    Par défaut
    ben en fait si.
    Si tu mets null au premier champ, Java va chercher la police par défaut (j'ai déjà essayé plusieurs fois cette méthode et elle marche !).

    En ce qui concerne le repaint() dans la méthode update, elle me permet de recharger la barre de progression quand elle est en mode indéterminée car sinon cela créé des trainées !!!

    Mais c'est vrai que la méthode g.dispose(); est douteuse

Discussions similaires

  1. [AC-2000] Problème de police de caractère dans les états
    Par woant dans le forum IHM
    Réponses: 5
    Dernier message: 03/09/2009, 20h58
  2. Police de caractères dans liste déroulante
    Par brazilia28 dans le forum 4D
    Réponses: 2
    Dernier message: 27/04/2007, 09h17
  3. Problème avec certains caractéres dans variable
    Par Off$ide dans le forum Langage
    Réponses: 14
    Dernier message: 13/12/2005, 10h46
  4. Changer de police de caractères dans DC
    Par vanitom dans le forum MFC
    Réponses: 3
    Dernier message: 12/12/2005, 17h28
  5. Adresse des polices de caractères dans la RAM video ?
    Par Anonymous dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 27/05/2002, 17h29

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