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