Salut,
Si je mets le .jar du look & feel (Trendy) dans le classpath de mon application, ça marche très bien.
Par contre, si je ne le mets pas dans le classpath (je veux être capable de charger et de changer des look&feels dynamiquement), et que je crée un ClassLoader pour qu'il le charge à la volée, ça marche presque... mais pas totalement.
En effet, tout se charge correctement, pas d'exceptions, les composants sont tous bien dessinés avec le look&feel... sauf les bordures (des textfields, des listes, etc...) :
Voici mon code (simplifié) qui charge le look&feel :
L'appel à createClassLoader(lookAndFeel.getResources()) revient à ceci (je simplifie car c'est beaucoup plus générique que ça) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 //Crée un ClassLoader référençant les librairies nécessaires pour le look and feel, en l'occurence ici Trendy_1.8.jar ClassLoader specificClassLoader = createClassLoader(lookAndFeel.getResources()); //Utilise ce ClassLoader comme ClassLoader principal UIManager.put("ClassLoader", specificClassLoader); //Création de l'instance du look and feel LookAndFeel look = (LookAndFeel) Class.forName(lookAndFeel.getLookAndFeelClassName(), true, specificClassLoader).newInstance(); //Affectation du look and feel UIManager.setLookAndFeel(look);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ClassLoader createClassLoader(String[] lib) { return new URLClassLoader(new File(libs[0]).toURI().toURL()); }
J'ai également vérifié, tout est bien exécuté dans l'EDT...
Une idée de la cause du problème?
Merci beaucoup d'avance !![]()
Partager