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

Composants Java Discussion :

[JEditorPane]ajout de balises html


Sujet :

Composants Java

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Points : 2
    Points
    2
    Par défaut [JEditorPane]ajout de balises html
    bonjour,

    je travaille sur un editeur html, pour ce faire j'utilise un JEditorPane
    après maintes recherches et maints essais, je n'ai pas réussi à trouver le moyen d'insérer des tags html dans mon JEditorPane.
    ce que j'entend par tags : c'est surtout pour insérer des tableaux que je coince.
    (genre : <table width=\"25%\" border=\"1\"><tr><td></td></tr></table>)

    merci d'avance

  2. #2
    Membre habitué Avatar de relivio
    Profil pro
    Inscrit en
    Février 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 157
    Points : 177
    Points
    177
    Par défaut
    si tu as une table vide je suis pas sûr que ça fonctionnera!!!
    enfin c'est comme ça en html si c'est vide il ne s'ennuie pas à le dessiner.

    Tchô!!

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    euh...si, ca fonctionne, si je fais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monediteur.setText("<table width=\"25%\" border=\"1\"><tr><td></td></tr></table>");
    il me montre bien le tableau mais evidement il me vire tout ce qu'il y avait avant sur mon JEditorPane

  4. #4
    Membre habitué Avatar de relivio
    Profil pro
    Inscrit en
    Février 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 157
    Points : 177
    Points
    177
    Par défaut
    il n'y a pas un mode "append"? au lieu de faire un setText.

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    pas sur un JEditorPane malheureusement...

    edit : j'ai vu qu'il y avait moyen avec ceci : HTMLEditorKit.InsertHTMLTextAction, seulement je ne sais pas comment ca fonctionne

  6. #6
    Membre habitué Avatar de relivio
    Profil pro
    Inscrit en
    Février 2004
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 157
    Points : 177
    Points
    177
    Par défaut
    et si tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String tmp = tonEditeur.getText();
    tonEditeur.setText(tmp+"<table width=\"25%\" border=\"1\"><tr><td></td></tr></table>");
    ça ne pourrait pas faire ce que tu cherches?

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    j'ai deja essayé... mais ca ne marche pas non plus

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    je travail aussi avec les JEditorPane et j'ai bien galerer
    j'avais des probs avec l'editorpane donc je me sert d'un JTextPane (sous class de editorPane).

    le code suivant me sert a ajouter une balise A.
    essaie de t'en inspirer

    Variable : Ed => JTextPane

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
            String selText = ed.getSelectedText();
            if (selText == null)
                   selText = new String("");
            int selStart = ed.getSelectionStart();
            int textLength = selText.length();
     
            SimpleAttributeSet att = new SimpleAttributeSet();
            SimpleAttributeSet tag = new SimpleAttributeSet();
     
            att.addAttribute("href", getCible());
            tag.addAttribute(HTML.Tag.A,att);
     
            if (tSelect) {
                ed.setCharacterAttributes(tag,false);
            }
            else {
                try {
                    ed.getDocument().insertString(selStart, getTexte(),  null);
                    ed.select(selStart, getTexte().length());
                    ed.setCharacterAttributes(tag,false);
                }
                catch (Exception ex) {
                    System.out.println("Ours");
                }
            }
     
     
            ed.setText(ed.getText());
    petite explication (petite ) :
    il faut instancier des AttributeSet et inserer ses balises dedans.

    par exemple, pour le debut de ton tableau, ca ferais ... (j'imagine) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            SimpleAttributeSet table= new SimpleAttributeSet();
            SimpleAttributeSet aAjouter= new SimpleAttributeSet();
     
            table.addAttribute("width", "25%");
            table.addAttribute("border","1");
     
            //le null : pas d'attributs
            table.addAttribute(HTML.Tag.TR,null);
            aAjouter.addAttribute(HTML.Tag.TABLE,table); ....
    il faut emboiter les AttributeSet.
    enfin je pense

    test ca !
    ++

    (et si qqun a une idée de : Comment faire dans un JTextPane (ou EditorPane) pour quand l'on clique sur une image, on puisse la redimensionner en WYSIWYG, je suis preneur)

  9. #9
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    c'est presque ca, j'ai transformé mon JEditorPane en JTextPane pour tester l'affaire.

    les methodes AttributeSet sont orientée mise en forme de texte, pas très paramétrables quand on veut faire un tableau...(nombre de lignes et de colonnes)

    je pense qu'il faut passer par l' HTMLEditorKit mais là je coince...les exemples ne se bousculent pas sur la toile
    il y a apparement une methode : InsertHTMLTextAction qui devrait faire l'afffaire...mais je sèche quant à son fonctionnement..

  10. #10
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    hum...j'y suis presque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    JToolBar bar = new JToolBar();
    JButton tableButton = new JButton();
    Action a = new HTMLEditorKit.InsertHTMLTextAction("tableau","<table width=\"25%\" border=\"1\"><tr><td></td></tr></table>",HTML.Tag.P,HTML.Tag.TABLE);
    if (a != null)
    { 
    tableButton = bar.add(a);
    tableButton.setText("table");
    }
    le problème c'est que je retrouve mon tableau compris entre les balises <p> et que malgré mon width="25%", il ne prend la place que d'un caractère ! voilà ce que j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <html>
      <head>
      </head>
      <body>
        <p>
          <table border="1" width="25%">
            <tr>
              <td>
     
              </td>
            </tr>
          </table>
        </p>
      </body>
    </html>
    il faudrait que j'arrive à virer les balises parents <p> (ou autres) lors de l'insertion

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 15
    Points : 12
    Points
    12
    Par défaut mouais
    moi aussi j'ai eu un probleme avec la balise p.

    par exemple, quand je rajoute une image alors que les p ne sont pas la, ya une balise p-implied qui se rajoute apres ... et la le resultat : GROS PATé .

    c galere.

    d'ailleurs si tu trouve un moyen de les virer les p ou d'en rajouter s'il n'y en a pas ca m'interesse

    ++ et bonne chance

  12. #12
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    pour ceux que ca interesse, voici une methode pour insérer des tableaux,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    String tab = "<table border=\"1\" width=\"100%\"><tr><td></td></tr></table>";
    Action a =new HTMLEditorKit.InsertHTMLTextAction("tableau",tab,HTML.Tag.P,HTML.Tag.TABLE);
    a.actionPerformed(new ActionEvent(monPane,15,"ajoutTable"));
    monPane.setText(monPane.getText());
    pour afficher convenablement les modifications il est necessaire de re-appliquer le texte sur le Panel.
    la methode InsertHTMLTextAction doit pouvoir marcher avec tous les ajouts de balises html (ajout d'images, de liens, etc...)

  13. #13
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Points : 2 190
    Points
    2 190
    Billets dans le blog
    3
    Par défaut
    Salut almass,

    merci pour ce code qui va énormément me servir.

    A++

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

Discussions similaires

  1. [XML] [Débutant]Comment ajouter des balise html dans un fichier XML
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/09/2010, 15h36
  2. Ajout des balises html
    Par Gwenc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/05/2010, 23h49
  3. Ajouter des balises html à un fichier
    Par fuyo2004 dans le forum MATLAB
    Réponses: 10
    Dernier message: 12/07/2009, 18h22
  4. [CKEditor] Comment ajouter une balise HTML personnalisée
    Par roadruner dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 11/05/2007, 16h34
  5. Ajout de balises HTML
    Par vmal dans le forum Langage
    Réponses: 5
    Dernier message: 09/09/2006, 13h28

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