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.
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.
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 :[EDIT]J'ai post� un code faux !!!! Il faut remplacer UIDefaults.put(...) par UIManager.getDefaults().put(...)
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); ...
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 :
Son utilisation est un peu d�licate, mais il existe 1 astuce infaillible
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){} }. 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 ^^
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 :
Merci pour les r�ponses.
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); } }
Juste pour info ..
Neptus quelle est ton astuce infaillible ??
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 :
la partie haute du skin (la barre de la JFrame) reste en style Windows.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 JFrame f = new JFrame(); //ajout des Component changeLF(f);
Pour y rem�dier, on fait (avec quelques variantes ...):
ne pas oublier les 2 appels au constructeur ...
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
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![]()
Cher Neptus,ne pas oublier les 2 appels au constructeur ...
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 ;-)
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.
JFrame.setDefaultLookAndFeelDecorated(true); doit etre invoque avant de creer les fenetres. Sinon il faut en effet invoquer SwingUtilities.updateComponentTreeUI(leComposantRacine).
Envoy� par Xavinou
![]()
![]()
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.
Partager