#1 Le 07/12/2007, à 23:16
- ®om
[Résolu] [Java] Problème look&feel et ClassLoader
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 :
//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);
L'appel à createClassLoader(lookAndFeel.getResources()) revient à ceci (je simplifie car c'est beaucoup plus générique que ça) :
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 !
Dernière modification par ®om (Le 08/12/2007, à 20:12)
Hors ligne
#2 Le 08/12/2007, à 20:11
- ®om
Re : [Résolu] [Java] Problème look&feel et ClassLoader
J'ai rajouté ça et ça marche :
Thread.currentThread().setContextClassLoader(specificClassLoader);
Hors ligne