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 :

[Swing] JeditorPane et HTML


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier Avatar de Michel38
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2005
    Messages : 218
    Points : 113
    Points
    113
    Par défaut [Swing] JeditorPane et HTML
    Bonjour à tous,
    Je cherche à créer un JeditorPane, et lui mettre du HTML dedans.
    En fait, je crée le HTML ligne après ligne, et je veux insérer ça dans mon JEditorPane.
    J'ai vu qu'on était obligé avec la méthode settext de tout insérer d'un coup
    du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jep.setText("<html><head></head><body><h1><font color='#ff0000'>Coucou</font></h1></body></html>");
    Il n'y a pas un moyen d'insérer les lignes de HTML l'une après l'autre ?
    Faudrait il créer un document HTML et ensuite l'insérer dans le JEditorPane
    avec la même méthode setText ???
    Et dans ce cas, comment faire ça ????
    Merci de votre aide...
    Michel

  2. #2
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Pourquoi veux-tu le faire ligne par ligne ? Tu peux toujours faire cela si tu y tiens VRAIMENT mais c'est chiant a faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // il faut avoir installe le type content text/html au prealable
    HTMLDocument doc = (HTMLDocument) je.getDocument();
    Ensuite regarde la documentation de HTMLDocument, il y a tout un tas de methodes insert(Element, String). Elles permettent d'inserer du code HTML avant ou apres un element du document. Reste a obtenir le dernier element...
    Romain Guy
    Android - Mon livre - Mon blog

  3. #3
    Membre régulier Avatar de Michel38
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2005
    Messages : 218
    Points : 113
    Points
    113
    Par défaut
    Je veux faire ligne par ligne parce que je dois insérer des données dans ma page HTML, et je dois placer des conditions particulières (if else)
    en plein milieu....
    Et de plus, je ne souhaite pas stocker mes infos dans un fichier HTML et ensuite faire un setPage !!!
    Donc la solution, insérer mes lignes HTML l'une après l'autre...
    Je regarderai la doc HTMLDocument,
    Merci en tout cas

  4. #4
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Salut. Je répond assez vite donc sans vraiment avoir lu de la doc, des erreurs peuvent etre donc presente. Je pensais que tu pourrais créer une classe qui etend JEditorPane et tu lui met cette methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void append(String ligne) {
                       setText(getText() + "\n" + ligne);
             }
    Voila bonne chance

  5. #5
    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,

    Citation Envoyé par GhostMaster
    Je pensais que tu pourrais créer une classe qui etend JEditorPane et tu lui met cette methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void append(String ligne) {
                       setText(getText() + "\n" + ligne);
             }
    Attention car avec cette méthode à chaque fois que tu ajouteras une ligne, un nouvel objet String contenant tout le texte sera recréé, ce qui fait que tu te retrouve avec beaucoup d'allocation/désallocation d'objet, ce qui peut s'avérer assez lourd...

    A titre d'exemple si tu génères un code HTML de 40Ko par ligne de 80 caractères, tu auras alloué en tout près de 10Mo...


    Il vaut donc mieux utiliser le HTMLDocument comme l'as indiqué Gfx...

    a++

  6. #6
    Membre régulier Avatar de Michel38
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2005
    Messages : 218
    Points : 113
    Points
    113
    Par défaut
    Et bien justement, puisqu'on en parle.....
    J'ai utilisé un HTMLDocument, et au lieu de m'afficher ce que je désire,
    Il m'affiche le code HTML avec tous les tags ....
    Ce n'est pas vraiment ce que je désire...
    Dans mon code je mets ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            kitHaut = new HTMLEditorKit(); 
            docHaut = (HTMLDocument)kitHaut.createDefaultDocument() ; 
            jepHtmlHaut.setDocument(docHaut);
    et ensuite je fais une série de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            docHaut.insertString(docHaut.getLength(), "<html>" , docHaut.getStyle("regular"));
    Qu'ai je fais de mal ???
    Merci de votre aide ....

  7. #7
    Membre régulier Avatar de Michel38
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2005
    Messages : 218
    Points : 113
    Points
    113
    Par défaut
    En clair, à partir du moment où l'on a créé le document HTML avec des insertString dans un HTMLDocument, que faut il faire pour voir apparaître cette page HTML ?
    En sachant que j'aimerais bien utiliser une feuille de style..
    Déjà, faut il utiliser un JEditorPane, ou un JTextPane ???
    Ensuite faut il passer par un HTMLEditorKit ?
    Ce n'est vraiment pas évident, et je n'ai pas trouvé d'exemple sur internet qui soit ressemblant à ce que je veux faire.....
    Merci de votre aide..

Discussions similaires

  1. [Swing] Utiliser du HTML: Une bonne pratique ?
    Par dranzul dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 28/07/2011, 09h42
  2. [strategie][swing]afficher du HTML avec java
    Par ots2 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 30/04/2008, 10h45
  3. Réponses: 1
    Dernier message: 24/09/2006, 10h35
  4. [SWING][JEditorPane] retour à la ligne automatiques
    Par narmataru dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 10/02/2006, 17h52
  5. [JEditorPane]ajout de balises html
    Par almass dans le forum Composants
    Réponses: 12
    Dernier message: 12/05/2004, 17h07

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