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

Interfaces Graphiques en Java Discussion :

Changer la fonte pour une application


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre �prouv� Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    Par d�faut Changer la fonte pour une application
    Bonjour,

    Comment peut on changer la fonte pour tout une application ? (sans passer par la m�thode setFont des JComponent)

    Si quelqu'un connait un bon tutoriel traitant de la cr�ation d'un L&F je suis preneur !

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    F�vrier 2004
    Messages
    1 832
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2004
    Messages : 1 832
    Par d�faut
    Bonjour,
    Les param�tres par d�faut d'un L&F sont d�finis s�par�ment pour chaque composant.Il te faudra donc forc�ment �num�rer tous les composants.

    Sachant cela, tu as le choix de red�finir un L&F ou de modifier celui en place en passant par UIDefaults.put(). Pour �tre s�r de n'oublier aucun composant, le mieux est de regarder le code source du L&F que tu modifies.
    Exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    FontUIResource myFont = new FontUIResource("Dialog", Font.PLAIN, 12);
    UIDefaults.put("Label.font", myFont);
    UIDefaults.put("Panel.font", myFont);
    UIDefaults.put("Button.font", myFont);
    UIDefaults.put("RadioButton.font", myFont);
    ...
    [EDIT]J'ai post� un code faux !!!! Il faut remplacer UIDefaults.put(...) par UIManager.getDefaults().put(...)
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'�trenne." B.V.
    Non au langage SMS ! Je ne r�pondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre chevronn� Avatar de NeptuS
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    392
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 392
    Par d�faut
    1 : les L&F
    je te conseille la biblioth�que skinlf de lf2prod, dispo sur le site de javootoo.

    tu peux utiliser ce code pour le mettre en place :
    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
     
      public static void changeLF(JFrame param){
            Skin skin = null;
            try {
                skin = SkinLookAndFeel.loadThemePack(SKIN_FILE_PATH);
                SkinLookAndFeel.setSkin(skin);  // set the skin
                UIManager.setLookAndFeel("com.l2fprod.gui.plaf.skin.SkinLookAndFeel");
                JFrame.setDefaultLookAndFeelDecorated(true);
            } catch (java.lang.Exception e) { e.printStackTrace(); }
     
            SwingUtilities.updateComponentTreeUI(param);
     
            //reSize de la fenêtre et centrage au mileu de l'écran.
            try{
                param.pack();
                int h = param.getHeight()+10;
                int w = param.getWidth()+10;
                param.setSize(w, h);
     
                java.awt.Dimension scrn = param.getToolkit().getScreenSize();
                param.setLocation((int)(scrn.getWidth()-w)/2, (int)(scrn.getHeight()-h)/2);
            }catch(Exception e){}
        }
    Son utilisation est un peu d�licate, mais il existe 1 astuce infaillible . je te laisse chercher un peu, reviens nous voir si tu ne trouve pas.

    2 : la police.
    Si tu cherche � changer ta fonte, je te conseille l'inox, C moins lourd ^^

  4. #4
    Membre �prouv� Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    Par d�faut
    Visiblement il n'y a pas d'autre solution que de changer les cl�s pour tous les composants. Pour ne pas en oublier j'ai fait le bout de 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
     
            FontUIResource bleriotFont = new FontUIResource("Bleriot", Font.PLAIN, 15);
     
            UIDefaults uiDefaults = UIManager.getDefaults();
     
            Enumeration uiEn = uiDefaults.keys();
            while (uiEn.hasMoreElements())
            {
                Object key = uiEn.nextElement();
                if (key.toString().endsWith(".font")) {
                    uiDefaults.put(key, bleriotFont);
                }
            }
    Merci pour les r�ponses.

  5. #5
    Membre �prouv�
    Inscrit en
    Mars 2006
    Messages
    137
    D�tails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Par d�faut
    Juste pour info ..

    Neptus quelle est ton astuce infaillible ??

  6. #6
    Membre chevronn� Avatar de NeptuS
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    392
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 392
    Par d�faut
    il faut d'abord trouver l'erreur ...
    ou disons tout du moins le probl�me d'affichage ...
    apr�s je vous dirait ^^

    nan, je rigole ...
    si vous faites :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    JFrame f = new JFrame();
    //ajout des Component
    changeLF(f);
    la partie haute du skin (la barre de la JFrame) reste en style Windows.
    Pour y rem�dier, on fait (avec quelques variantes ...):

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    JFrame f = new JFrame();
    changeLF(f);
    f = new JFrame();
    //ajout des Component
    ne pas oublier les 2 appels au constructeur ...

    De plus, on peut aussi utiliser cette m�thode sur des JOptionPane malgr� les diff�rences d'h�ritage ... quelques autres astuces dans mon sac

  7. #7
    Membre �prouv� Avatar de Xavinou
    Inscrit en
    Mai 2005
    Messages
    135
    D�tails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 135
    Par d�faut
    ne pas oublier les 2 appels au constructeur ...
    Cher Neptus,

    Si tu dois appeler un constructeur deux fois pour construire un seul objet, c'est certainement que quelque chose n'est pas bon dans ton code...

    Il y a une astuce pour changer de LAF mais je te laisse chercher ;-)

  8. #8
    Membre chevronn� Avatar de NeptuS
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    392
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 392
    Par d�faut
    il me semble qu'il faut faire appel � updateTreeUI() (ou un nom approchant) apr�s le JFrame.setDefaultLookAndFeelDecorated(true); mais je ne suis pas sur de tout �a. Je n'ai pas de quoi tester aujourd'hui, je verrai �a ce soir, mais il me semble en effet qu'il existait une m�thode moins barbare . Mais je ne me suis jamais donn� la peine de chercher.

  9. #9
    Gfx
    Gfx est d�connect�
    Expert confirm�
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    D�tails du profil
    Informations personnelles :
    �ge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par d�faut
    JFrame.setDefaultLookAndFeelDecorated(true); doit etre invoque avant de creer les fenetres. Sinon il faut en effet invoquer SwingUtilities.updateComponentTreeUI(leComposantRacine).

  10. #10
    Membre Expert
    Avatar de xavlours
    Inscrit en
    F�vrier 2004
    Messages
    1 832
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2004
    Messages : 1 832
    Par d�faut
    Citation Envoy� par Xavinou
    Pour ne pas en oublier j'ai fait le bout de code suivant :
    J'y avais pas pens� !
    C'est pas b�te du tout.

    Tu risques peut �tre d'avoir des surprises si la cl� est du style "button.fontHighlight" ou consorts (je sais pas trop si il y en a).

    Tu peux tester si la cl� contient "font" (et non se termine par) ou si la valeur est instance de FontUIResource.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'�trenne." B.V.
    Non au langage SMS ! Je ne r�pondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. Comment faire des etats pour une application web ?
    Par ovh dans le forum Autres outils d�cisionnels
    R�ponses: 6
    Dernier message: 06/07/2021, 03h25
  2. R�ponses: 1
    Dernier message: 19/10/2011, 20h28
  3. [c#] Changer de curseur pour une application compl�te
    Par dams580 dans le forum Windows Forms
    R�ponses: 6
    Dernier message: 16/06/2006, 10h32
  4. [Compilation] A quel moment pour une application ?
    Par Rick1602 dans le forum Eclipse Java
    R�ponses: 2
    Dernier message: 04/03/2004, 20h36

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