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 :

[JLabel]setFont() ne marche pas


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut [JLabel]setFont() ne marche pas
    bonjour à tous,
    j'ai le code suivant :
    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
    public class TroncRenderer extends DefaultTableCellRenderer{
     
        private Font font = new Font("TimesNewRoman",Font.BOLD,11);
        /** Créer une nouvelle instance de IntituleRenderer2 */
        public TroncRenderer() {
            setForeground(Color.BLUE);
            setHorizontalAlignment(JLabel.RIGHT);
            setFont(font);
     
        }
     
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value,
                              boolean isSelected, boolean hasFocus, int row, int column) {
     
            Component label = super.getTableCellRendererComponent(table, value, isSelected, 
                    hasFocus, row, column);
     
     
            return label;
        }
    }
    Font ne change pas à l'affichage,
    mais avec ce code si:
    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
    public class TroncRenderer extends DefaultTableCellRenderer{
     
        private Font font = new Font("TimesNewRoman",Font.BOLD,11);
        /** Créer une nouvelle instance de IntituleRenderer2 */
        public TroncRenderer() {
            setForeground(Color.BLUE);
            setHorizontalAlignment(JLabel.RIGHT);
     
     
        }
     
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value,
                              boolean isSelected, boolean hasFocus, int row, int column) {
     
            Component label = super.getTableCellRendererComponent(table, value, isSelected, 
                    hasFocus, row, column);
     
            setFont(font);
            return label;
        }
    }
    Quelqu'un sait pourquoi ?

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    L'instance du JComponent utilisé par le DefaultRenderer n'est pas forcémenta la même (typiquement dans le cas d'une délégation, ce qui doit être le cas pour le DefaultTableCellRenderer).

    Enfin dans le cas du DefaultTableCellRenderer c'est un poil plus tricky, car sa méthode getTableCellRendererComponent fait un appel à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setFont(table.getFont());
    , donc forcément ton setFont initial ne sert basiquement à rien, vu qu'il est mangé par la méthode mère.

    En général vérifier le code de Swing est plutôt instructif ^^.

  3. #3
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    En effet, cette méthode cache la mienne !

    En général vérifier le code de Swing est plutôt instructif ^^.
    J'ai cherché dans le code de Swing mais au mauvais endroit !

    merci

  4. #4
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    une dernière question et je te laisse tranquille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setFont(table.getFont());
    Cette instruction me semble inutile ! alors pourquoi les gens de Swing l'ont mise ?

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tout simplement si l'utilisateur modifie la font de la table, il faut que cette fonte soit utilisée au niveau des renderers, bref il n'y a pas trente solutions (imagines un changement de police en cours d'exécution, par exemple).

  6. #6
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    Je crois qu'en jouant un peu avec le code de Swing, on peut parfois maximiser les performances selon le contexte de notre application !

    Par exemple dans mon cas, puisque j'ai utilisé ma propre fonte dans mon code je peux créer ma propre classe identique à DefaultCellrenderer sauf que j'enlève l'ancienne instruction !

    Swing est comme meme bien fait

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

Discussions similaires

  1. JLabel ne marche pas correctement sur firefox ?
    Par razily dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/04/2012, 17h08
  2. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  3. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  4. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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