3 votes

JavaFX 2 : Comment charger une feuille de style dans une sous-classe de scène distribuée dans le cadre d'une bibliothèque ?

Je suis en train de sous-classer un grand nombre de classes JavaFX 2 pour les distribuer dans le cadre d'une bibliothèque qui sera utilisée par d'autres. Cela nécessite qu'une feuille de style (faisant partie de la bibliothèque) soit appliquée à toutes les instances de MySceneClass (ce n'est pas son vrai nom :-) ), et je n'arrive pas à trouver le bon chemin magique. J'ai essayé des variantes de :

mySceneInstance.getStylesheets.addAll("/com/mine/css/MySceneClass.css")

où com.mine.css est un paquet de la bibliothèque : Les variantes que j'ai essayées incluent l'absence de barre oblique en tête, la suppression de la partie en tête du chemin, et probablement quelques autres. Mais je reçois toujours le message :

WARNING: com.sun.javafx.css.StyleManager loadStylesheet Resource "/com/mine/css/MySceneClass.css" not found.

J'ai également essayé d'ajouter une classe Css dans le package css, puis d'utiliser la fonction

com.mine.css.Css.getResource("Scene.css")

pour récupérer une URL que je peux passer à ...getStyleSheets.addAll(...), mais lorsque je le fais, j'obtiens un message du genre :

WARNING: com.sun.javafx.css.StyleManager loadStylesheet Resource "../css/Scene.css" not found.

ce qui est très déroutant, car getResource semble identifier correctement le fichier, mais je ne peux toujours pas le charger.

C'est sur l'actuelle dev preview sur OS X (je crois que la version est 2.1 09).

Merci pour toute aide, Ken

12voto

Andrew Points 2407

Je n'ai eu de chance qu'avec cette syntaxe, telle qu'elle figure dans l'échantillon Ensemble :

scene.getStylesheets().addAll(Ensemble2.class.getResource("ensemble2.css").toExternalForm());

3voto

user890204 Points 149

J'ai finalement trouvé le problème dans Intellij IDEA CE qui, par défaut, fait no reconnaît les fichiers css comme une ressource qui doit être copiée du répertoire source au répertoire cible. L'ajout d'un motif *.css à la liste des types de ressources reconnus a permis de résoudre le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X