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 :

Insérer tag HTML complexe dans un JTextPane


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2009
    Messages : 88
    Par défaut Insérer tag HTML complexe dans un JTextPane
    Bonjour, j'arrive à insérer des tags HTML dans un JTextPane comme ceci :

    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
    HTMLDocument doc = ( HTMLDocument )zoneTexte.getDocument( );
    int min = zoneTexte.getSelectionStart( );
     
    javax.swing.text.Element elem = doc.getCharacterElement( min );
    String text = zoneTexte.getSelectedText( );
    javax.swing.text.SimpleAttributeSet newAttr = new javax.swing.text.SimpleAttributeSet();
    javax.swing.text.AttributeSet a = elem.getAttributes();
    newAttr.addAttributes(a);
     
    if( a.getAttribute( tag ) == null ){
    	newAttr.addAttribute( tag, "" );
    }
    else{
    	newAttr.removeAttribute( tag );
    }
    try{
    	// Supprime la sélection
    	doc.remove( min, text.length( ) );
    	// Rajoute la sélection + tag
    	doc.insertString( min, text, newAttr );
    	}catch ( BadLocationException exception ) { exception.printStackTrace( ); }
    zoneTexte étant mon JTextPane et tag étant un tag HTML (HTML.Tag.B ...)

    Ca marche bien pour 80% des cas. A partir du moment ou le tag n'a pas d'attributs. (<b></b>, <i></i>, ...)
    Pour les autres (exemple : <div align="center"> </div>) je ne sais pas comment il faut faire.

    La méthode newAttr.addAttribute( tag, "" ); a comme deuxième paramètre "Object value", j'imagine donc que c'est un élément de réponse.

    J'ai essayé de faire newAttr.addAttribute( tag, "align=center" ); mais ça ne fait rien du tout.

    J'ai regardé du coté de la classe HTML, il y a une sous-classe HTML.Attribute mais il n'y a que des "accesseur"(get) dedans.

    Comment faire pour insérer des tags "complexe" ?
    Merci d'avance !

    Je pense qu'il faut que je passe par une variable de type HTML et que je fasse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newAttr.addAttribute( html, "center" );
    mais je ne sais pas construire une variable de type HTML...

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2009
    Messages : 88
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if( a.getAttribute( tag ) == null ){
    	newAttr.addAttribute( tag, "" );
    	if( value != "")
    		newAttr.addAttribute( attr, value );
    }
    avec :
    • HTML.Tag tag = HTML.Tag.DIV
    • HTML.Attribute attr = HTML.Attribute.ALIGN
    • String value = "left";


    ne fonctionne pas non plus.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2009
    Messages : 88
    Par défaut
    J'ai trouvé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    javax.swing.text.SimpleAttributeSet cls = new javax.swing.text.SimpleAttributeSet( );
    cls.addAttribute( attr, value );
    newAttr.addAttribute( tag, cls );
    avec les mêmes valeurs aux variables qu'au dessus.

    Ca insère bien le <div align="left"></div> mais ça ne le prend pas en compte. Mon HTML contient bien le div avec du texte au milieu, mais ne s'aligne pas.

    J'ai essayé de rajouter ceci juste après le code ci-dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    javax.swing.text.MutableAttributeSet inattr = ((HTMLEditorKit)(zoneTexte.getEditorKitForContentType("text/html"))).getInputAttributes();
    inattr.addAttributes(newAttr);
    Toujours pareil. L'insertion se fait, mais n'est pas prise en compte. (Pour les tags simples, ça marche très bien. )

    Code console : Sélectionner tout - Visualiser dans une fenêtre à part
    Et <b>Xavier</b> <div align="center">joue</div> les
    (ici le Xavier est en gras, le div pas pris en compte)

    Par contre,

    Code console : Sélectionner tout - Visualiser dans une fenêtre à part
    occupant <a href="http://google.fr">bâtiment</a>
    il y a bien l'hyperlien !

    Apparemment le problème viendrait donc du div ?

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut
    Désolé de redéterer un vieux sujet mais j'ai un petit souci concernant les tags HTML. J'ai utilisé le code ci-dessus et j'ai réussi a insérer des balises pour aligner le texte. Ces balises sont intégrées dans un jtextpane à partir de bouton d'une barre d'outil. Le seul problème c'est que lorsque l'on change d'alignement les balises s'imbrique. Comment savoir sur une ligne si la balise d'alignement existe déjà pour la supprimer avant d'insérer l'autre?

Discussions similaires

  1. [DTD] Tags Html dans XML ---> Etendre la dtd du Xhtml
    Par tipaquo dans le forum Valider
    Réponses: 14
    Dernier message: 19/07/2010, 09h09
  2. TAG HTML dangereux dans methode post
    Par DelphiCool dans le forum ASP.NET
    Réponses: 3
    Dernier message: 05/03/2008, 19h30
  3. Invocation de Tag <html:link> dans un Tag JSP
    Par Bogdan dans le forum Struts 1
    Réponses: 4
    Dernier message: 29/12/2006, 09h38
  4. [struts] tabindex dans un tag <html:radio>
    Par Milouse dans le forum Struts 1
    Réponses: 2
    Dernier message: 28/11/2005, 17h44
  5. utiliser un bean dans le tags html:link
    Par clement42 dans le forum Struts 1
    Réponses: 3
    Dernier message: 29/07/2005, 18h36

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