J'essaie de créer un panneau Swing dont les éléments ont une taille de police différente de celle du reste de l'application swing. Initialement, l'utilisation de setFont
pour quelques composants n'a posé aucun problème. Maintenant, j'ai plusieurs composants (et tous leurs sous-composants), donc cette solution est impraticable.Modifier la taille de la police d'un JPanel et tous ses éléments
J'ai cherché à changer les propriétés d'interface utilisateur par défaut des composants de swing. Ce que j'ai trouvé est principalement en utilisant UIManager, qui change les propriétés globalement. Cela ne fonctionne pas pour moi parce que je veux garder les paramètres de police actuels pour tous les autres panneaux.
Pour le moment (et que je n'aime pas poster sans essayer quelque chose d'abord), j'ai un algorithme comme celui-ci:
public static void fixFont(Container c) {
c.setFont(c.getFont().deriveFont(10.0f));
Component[] comp = c.getComponents();
for (int i=0;i<comp.length;++i) {
if (comp[i] instanceof Container) {
fixFont((Container) comp[i]);
} else {
comp[i].setFont(comp[i].getFont().deriveFont(10.0f));
}
}
}
Le problème est que:
- il N'inclut pas certains éléments swing comme sa bordure.
- Je dois appeler cette fonction lorsque j'ajouter d'autres composants dynamiquement
Question: Y at-il une autre façon de modifier les propriétés de police d'un groupe Swing et tous ses composants, éléments, etc. (c.-à-tout le panel) ?
Merci pour vos idées
Je ne souhaite modifier que les polices du panneau et tous ses éléments. Je ne veux pas changer la police des autres panneaux. Faire cela en utilisant UIManager change la police pour tous les composants Swing. – YuppieNetworking
Ah, bon point. Je n'ai pas réalisé ce dont tu avais vraiment besoin. Je ne sais pas comment (ou si c'est possible) de le résoudre maintenant que je comprends votre question. – aioobe
Une solution de "sauvegarde" serait de faire comme vous le faites maintenant, mais également de vérifier et de mettre à jour les frontières via 'getBorder' et' instanceof TitledBorder'/'TitledBorder.setTitleFont' etc – aioobe