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

AWT/Swing Java Discussion :

HREF d'une image située dans le jar courant?


Sujet :

AWT/Swing Java

  1. #1
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut HREF d'une image située dans le jar courant?
    bonjour
    J'ai une interface swing qui affiche du html ...
    Le html à afficher est dans le jar courant ... jusque là tout va bien!
    sauf que dans un des cas ce HTML contient une référence à une image qui est également située dans le jar courant.
    Autant je sais aller chercher une image directement (par "getResource") autant je m'interroge sur le "HREF=" à mettre dans mon html pour qu'il trouve l'image.
    Bon j'ai pensé à un hack qui me permette dynamiquement de trouver l'URL de cette image et de la remplacer dans le document html avant de l'afficher ...
    mais je trouve ça un peu trop hackeux ...
    Il y a surement quelque chose de plus simple.
    un tuyau? merci

  2. #2
    Membre régulier Avatar de DjGonk
    Profil pro
    Inscrit en
    Février 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 88
    Points : 98
    Points
    98
    Par défaut
    Salut,

    Le plus simple c'est de mettre l'image et le fichier html dans le même package, et de là tu as juste à faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <A HREF="xxx.html" TARGET="xxx"><IMG SRC="nom_image.png"></A>
    dans ton fichier html.

    Après si ton image doit changer suivant des tests, tu peux poser dans ton html des "tags" (ex: @NOM_IMAGE) que tu viendras remplacer par le nom de l'image correspondant à l'état de ton test (en ouvrant le fichier html et en faisant un replaceFirst("@NOM_IMAGE", "xxx.png") sur la représentation String du fichier).

  3. #3
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    j'ai rédigé un peu trop vite : c'est pas le HREF c'est la référence de l'image que je cherche.
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <IMG SRC=quelquepart/monimage.jpg>
    la question c'est quoi mettre pour "quelquepart" sachant que l'image est dans un jar dépendant du jar courant...
    la réponse est peut être triviale : mettre juste le nom de l'image ... bon je vais tester.

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu peux tout simplement essayer d'utiliser l'URL retourné par getResource()...
    Je suppose que le moteur doit utiliser la classe URL pour accéder aux données...


    a++

  5. #5
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    je sens qu'un détail m'échappe.
    les documents html ont une description "en dur" par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <IMG SRC=image1.jpg>
    sachant que swing va devoir trouver cette image dans le jar courant (2° cas: dans un jar de déploiement dépendant du jar courant) quelle valeur donner à SRC ?
    bien sur le hack serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <IMG SRC="$$URL$$/image1.jpg">
    et éditer dynamiquement le texte html pour remettre une URL déduite de celle trouvée par getResource()... (en remplaçant la chaine "$$URL$$ par ce qu'il faut) ... mais bon s'il y avait plus simple.

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Heu... Tu utilises quoi comme code pour afficher ton document HTML ???

    Parce que perso j'ai essayé avec le code suivant et ca marche tout seul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    URL url = Main.class.getResource("/ressources/html/index.html");
    JEditorPane panel = new JEditorPane(url);
    JOptionPane.showMessageDialog(null, panel);
    Avec le package ressources.html contenant deux fichiers : icon.png et index.html
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <html>
    <body>
    	<h1>Hello World !</h1>
    	<img src="icon.png"/>
    </body>
    </html>


    a++

  7. #7
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    en fait j'ai une EditorPane que je nourris au fur et à mesure avec des documents divers !
    ( je lis un tas de données dans un fichier YAML puis, à la demande, je prends un champ dans ces données et je le fais afficher par la même EditorPane; ces champs texte sont au format HTML et certains peuvent contenir des références à des images qui sont dans le jar du document YAML: tout marche mais pour l'image je crois que je vais laisser tomber -c'est pas essentiel et j'ai la flemme de faire le hack décrit ci-dessus-)

    PS: toutes mes excuses pour ne pas avoir décrit correctement mon problème (c'est toujours pareil quand on bourre )

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Essayes de définir ton document HTML comme ceci :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html>
    <head>
        <base href="$URL$"/>
    </head>
    <body>
    </body>
    </html>

    Avec $URL$ qui correspond à l'URL de ton document YAML renvoyée par le getResource()...

    a++

  9. #9
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Lire la doc peut aider :


    # The setText method can be used to initialize the component from a string. In this case the current EditorKit will be used, and the content type will be expected to be of this type.

    # The read method can be used to initialize the component from a Reader. Note that if the content type is HTML, relative references (e.g. for things like images) can't be resolved unless the <base> tag is used or the Base property on HTMLDocument is set. In this case the current EditorKit will be used, and the content type will be expected to be of this type.


    bon j'utilise setText et j'ai pas encore trouvé comment positionner la propriété Base de HTMLDocument sur mon JEditorPane (avec l'URL déduite de getResource)... mais ça progresse!

  10. #10
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    donc toujours selon la doc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     HTMLDocument doc = (HTMLDocument) editorPane.getDocument() ;
     Dictionnary<Object, Object> props = doc.getDocumentProperties() ;
     props.put("Base", monURLTrafiquée) ;
    j'ai pas testé car j'ai un menhir à livrer mais on va considérer la question comme résolue (et je promets de lire la doc la prochaine fois )

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

Discussions similaires

  1. afficher un image située dans une dll
    Par idaram dans le forum Débuter
    Réponses: 2
    Dernier message: 07/02/2014, 14h50
  2. [MySQL] afficher une image située dans la bdd
    Par Sh4dow49 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 27/05/2008, 09h44
  3. Réponses: 1
    Dernier message: 02/11/2006, 09h25
  4. Réponses: 6
    Dernier message: 29/07/2005, 11h12
  5. [JAR] instancier une Image contenue dans un jar
    Par celine31 dans le forum Général Java
    Réponses: 3
    Dernier message: 03/04/2005, 15h55

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