IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Lire une ressource dans un FXML


Sujet :

JavaFX

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut Lire une ressource dans un FXML
    Salut à tous,

    J'essaye d'intégrer une image dans un button en JFX à partir d'un FXML mais rien n'y fait. J'ai toujours une "unexpected token" qui va avec un NullPointerException quoique je puisse changer ou modifié dans la syntaxe.

    La seul solution qui ne plante pas est cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <Button style="-fx-background-image:url('/resources/dessin.jpg')" />
    Mais malheureusement ca plante au chargement du fichier FXML.

    J'ai essayé de changer l'emplacement de l'image également mais en vain....


    Une idée ?

    PS : pour le moment je ne souhaite pas passer par du CSS externe ou par du code pour effectuer cela. J'aimerais comprendre pourquoi je ne peux pas charger d'image avec mon FXML.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 845
    Points : 22 855
    Points
    22 855
    Billets dans le blog
    51
    Par défaut
    Déjà, il manque un ; à la fin de la déclaration du CSS.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    Tout à fait d'accord. Par contre le problème est peut-être plus d'affichage car finalement la source est apparemment bien accessible au compilateur.

    je vais surtout essayer de jouer avec tous les paramètres d'un bouton dans un CSS afin de mieux travailler sur l'objet qui pose problème.

    Dommage qu'on ne puisse pas avoir une espèce de compilation à chaque modification de CSS afin de travailler plus directement entre le graphique et le code.

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 845
    Points : 22 855
    Points
    22 855
    Billets dans le blog
    51
    Par défaut
    Utilise SceneBuilder tout simplement, les modifications sont presque toutes apportées au vol bien sur toutes celles accessible via l'UI du soft mais aussi quand tu modifies le fichier CSS ou le FXML dans un éditeur externe (bon évidement parfois ça plante aussi si c'est trop drastique ou que la syntaxe est foirée).

    Il me semble également que ScenicView permet de modifier certaines valeurs, mais je ne sais pas si les CSS inline en font partie.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    Excuse moi bouye je me suis mal exprimé car je connais ces outils que tu m'avais précédemment conseillé d'utiliser. Ce que je fais mais dire qu'avec SceneBuilder on peut faire du CSS c'est être trop optimiste je trouve. Je préfère encore un CSS file dans mon IDE que passer par leur petites fenêtre.

    ScenicView est intéressant mais comment copier des valeurs éventuelles modifier dans le code même de l'application et pas simplement en runtime ? Faire des copier coller ou réécrire par recopie entre les fenêtres ?

  6. #6
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut a tous,
    est ce que le dossier resources est un Source Folder dans ce cas, tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Button style="-fx-background-image:url('dessin.jpg')" />
    Merci.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    Effectivement j'arrive à récupérer et visualiser une image à travers cette syntaxe mais dès que je range ma ressource images dans un dossier resources impossible d'y accéder.

    D'ailleurs comment connaitre les règles syntaxique concernant les différentes façon d'obtenir des ressources (classpath, url, @.....).

  8. #8
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    peux-tu envoyer une photo de l´arbre des repertoires de ton Projet?
    La on vera mieux ce qui cloche.
    Bonne journée

  9. #9
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    cette notation marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        <Pane prefHeight="793.0" prefWidth="725.0" style="-fx-background-color:white">
          <children>
            <ImageView fitHeight="150.0" fitWidth="200.0" layoutX="98.0" layoutY="103.0" pickOnBounds="true" preserveRatio="true">
              <image>
                <Image url="@../resources/coeur-music.jpg" />
              </image>
            </ImageView>
          </children>
        </Pane>
    alors que celle-ci non :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        <Pane prefHeight="793.0" prefWidth="725.0" style="-fx-background-color:white">
          <children>
            <Button layoutX="160.0" layoutY="163.0" mnemonicParsing="false" prefHeight="139.9609375" prefWidth="188.0" text="Button" style="-fx-background-image:url('/resources/coeur-music.jpg')" />
          </children>
        </Pane>
    Pourtant l'auto-completion de l’édition de mon fichier FXML m'a bien trouvé la ressources ainsi que son chemin pour y arriver. Si je remplace l'image qui est dans le package resources avec la même se trouvant également à la racine de src j'ai bien un button avec l'image dedans sans problème.

    L'arbre des répertoires n'est pas bien compliquée :

    src
    src\resources
    src\sample

  10. #10
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    essaies ceci voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <Pane prefHeight="793.0" prefWidth="725.0" style="-fx-background-color:white">
          <children>
            <Button layoutX="160.0" layoutY="163.0" mnemonicParsing="false" prefHeight="139.9609375" prefWidth="188.0" text="Button">
               <graphic>
                   <ImageView>
                     <Image url="@/coeur-music.jpg"/>
                   </ImageView>
                </graphic>        
            </Button>
          </children>
        </Pane>

  11. #11
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 643
    Points : 305
    Points
    305
    Par défaut
    le problème ce caracterise également dans mon CSS qui est attaché dans le preview de mon scenebuilder. D'ailleurs chaque modification de mon CSS dans mon IDE est detecté automatiquement et mise en application avec sceneBuilder.

    url de l'image d'un bouton est donc automatiquement chargé puisque il me mentionne une erreur quand je soucis une URL qui semble pourtant valide dans mon ide.

    ce CSS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -fx-background-image: url("/resources/bandeau.png")
    trouve bien la resource mais ni l'execution ni scenebuilder ne semble vouloir l'afficher.

    J'ai d'ailleurs aussi essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -fx-background-image: url("@/resources/bandeau.png")
    ou cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -fx-background-image: url("@../resources/bandeau.png")
    ou cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -fx-background-image: url("resources/bandeau.png")
    mon CSS est celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #bouton_note_couleur
    {
        -fx-background-image: url("resources/bandeau.png");
    }
    alors petit oubli de ma part ou réelle explication javaesque ?

  12. #12
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 845
    Points : 22 855
    Points
    22 855
    Billets dans le blog
    51
    Par défaut
    Mouai, je penche pour un bug dans les CSS inline.
    Ça marche sans soucis dans le CSS mais ça ne fonctionne pas du tout quand c'est inline (j'ai essaye avec ' ou &quot; ).

    Nom : marche pas.jpg
Affichages : 186
Taille : 353,8 Ko

    Ça mérite probablement la création d'un bug report sur le Jira.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    bonjou,
    J'ai le problème que toi en JavaFX je veux à partir d'un fichier qui se trouve dans un package (com.a.b.c.d) recupérer une image qui se trouve dans le dossier resources package fxml.icons..j'ai essayé toute les propositions dessus rien ne marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image img= new Image(getClass().getResourceAsStream("resources/icon.jpg"));
    Merci à vous

  14. #14
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    si com.myapp.resources.images est le package qui contient tes images:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image img= new Image(getClass().getResource("/com/myapp/resources/images/icon.jpg"));
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  15. #15
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par sinok Voir le message
    si com.myapp.resources.images est le package qui contient tes images:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image img= new Image(getClass().getResource("/com/myapp/resources/images/icon.jpg"));
    D bord je te remércie pour ta réponse, sinon, le package resources dont je parle, est celui crée par netBeants, au faite j'ai deux "folders" Resource Packages et Source Packages, dans ce dernier j'ai tout mes package com.a.b.c.d.e, et dans le dossier "Resource Packages" j'ai un package fxml.icons là où se trouve mes image
    donc je veux à partire de com.a.b.c.d.e aller au dossier resouces de netbeans (resources/fxml/icons)

    J'ai tout essayer, rien ne marche

  16. #16
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En fait, resources n'est probablement pas un package (ce devrait se voir à l'icône, elle différe suivant si il s'agit d'un package ou d'un répertoire basique).

    Donc pour accéder à ton icône je dirais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Image img= new Image(getClass().getResource("/fxml/icons/icon.jpg"));
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  17. #17
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par sinok Voir le message
    En fait, resources n'est probablement pas un package (ce devrait se voir à l'icône, elle différe suivant si il s'agit d'un package ou d'un répertoire basique).

    Donc pour accéder à ton icône je dirais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Image img= new Image(getClass().getResource("/fxml/icons/icon.jpg"));

    ça marche..Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lire une cellule dans une DBGrid
    Par flo74 dans le forum Bases de données
    Réponses: 10
    Dernier message: 30/01/2006, 08h52
  2. Lire une donnée dans la base de registre
    Par K.othmane dans le forum Langage
    Réponses: 1
    Dernier message: 06/01/2006, 11h32
  3. Sauvegarder/Lire une classe dans un fichier
    Par Rodrigue dans le forum C++
    Réponses: 10
    Dernier message: 10/09/2005, 14h12
  4. [ServletContext]Charger une ressource dans la servletContext
    Par lalou33 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 25/06/2004, 14h37
  5. Lire une valeur dans le registre
    Par John.s dans le forum C
    Réponses: 2
    Dernier message: 26/11/2003, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo