Quel est le problème avec ma syntaxe de l'appel d'une feuille de style (css) à partir d'un fichier FXML?
Je travaille dans NetBeans 8, avec Java 8 /JavaFX et FXML.
Dans le premier contrôleur (un AnchorPane) dans mon FXML document, j'ai ce qui fonctionne:
stylesheets="file:///C:/Users/me/Documents/NetBeansProjects/MyApp/src/myApp/myStyle.css"
Cependant, quand j'essaye de la remplacer avec n'importe quel type de chemin d'accès relatif, j'obtiens l'erreur suivante lors de l'exécution:
com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged
WARNING: Resource "myStyle.css" not found.
J'ai essayé
stylesheets="myStyle.css"
stylesheets="file://myStyle.css"
stylesheets="./myStyle.css"
stylesheets="css/myStyle.css"
(où j'ai mis une copie du fichier css dans un sous-répertoire où il a été)
...et peut-être 50 autres permutations. Chaque fois que je reçois le même message d'erreur.
La raison je me soucie est que je vais avoir un deuxième problème. Dans la première version, qui fonctionne sur ma machine... quand je prends mon fichier jar à une autre machine, le css n'est pas appliquée lorsque l'application est exécutée... C'est comme la ressource de fichier n'est pas copié.
Aider?
Merci!
-Adeena
OriginalL'auteur adeena | 2014-02-26
Vous devez vous connecter pour publier un commentaire.
Permettez-moi de considérer votre projet de structure comme suit
Vous pouvez spécifiques le chemin relatif dans le FXML à l'aide de
Dans votre contrôleur, vous pouvez l'ajouter comme suit
Pouvez-vous me montrer un bout de code. Pour le chargement des images dans le dossier styles je voudrais utiliser quelque chose de similaire
Image image = new Image(getClass().getResourceAsStream("/style/edit.png"));
Malheureusement, je ne peux pas envoyer ce morceau de code. Le concept de getClass().getResourceAsStream("style/modifier.png") ne fonctionne pas car il n'attend une Chaîne de caractères.
Le code que je vous ai donné est pour le chargement des images et non pas des fichiers. Si c'est juste des fichiers et non les images que vous chargez ensuite, vous devrez d'abord faire une
File
et puis de le lire. Je ne sais pas quel type de fichier il est, donc, je suis vraiment dans le pétrin comment vous aider !Ce n'est pas grave merci beaucoup pour essayer! 🙂 L'original de la réponse n'a répondu à ma question d'origine. 🙂
OriginalL'auteur ItachiUchiha
C'est la façon dont il fonctionne pour moi:
Le fichier css est dans le même package (dossier) que le FXML. Aussi ma racine se trouve être
<fx:root>
, j'attends qu'il fonctionne de la même pour votre<AnchorPane>
.Découvrez la docs, recherche pour "location de Résolution" pour plus de détails.
OriginalL'auteur Nikos Paraskevopoulos