Changer la taille de police d'un Composite et de tous ses éléments
Je suis en train de créer un ventail dont les éléments ont une taille de police différente que le reste de l'application swing. D'abord, à l'aide de setFont
pour un couple de composants de ne pas poser de problèmes. Maintenant, j'ai plusieurs composants (et tous ses sous-composants), donc cette solution n'est pas pratique.
J'ai cherché sur la modification de l'INTERFACE utilisateur par défaut des propriétés des composants swing. Ce que j'ai trouvé est la plupart du temps à l'aide de l'UIManager, ce qui modifie les propriétés à l'échelle mondiale. Cela ne fonctionne pas pour moi parce que je veux garder de la police de caractères courante des paramètres pour tous les autres panneaux.
Pour le moment (et comme je n'aime pas à poster sans tenter quelque chose en premier), j'ai un algorithme comme ceci:
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 ne comprend pas certaines swing éléments à l'instar de ses frontières.
- J'ai appeler cette fonction lorsque je ajouter d'autres composants dynamiquement
Question: Est-il un autre moyen de modifier les propriétés de police un ventail et tous ses composants, éléments, etc (c'est à dire tout ce qui dans le panneau) ?
Merci pour vos idées
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser cette astuce:
Produit:
getBorder
etinstanceof TitledBorder
/TitledBorder.setTitleFont
etcvous pourriez remplacer le
add
méthode sur votre composant de base et d'appliquer la police de l'ajout des composants et leurs enfants. ce serait vous faire économiser application de la police manuellement lorsque les composants sont ajoutés plus tard.