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 :

[JTextPane] Afficher et récupérer de l'HTML


Sujet :

Composants Java

  1. #1
    Membre habitué
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Points : 172
    Points
    172
    Par défaut [JTextPane] Afficher et récupérer de l'HTML
    Bonjour,

    J'ai un jTextpane :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /**
             * Methode jTextPane
             */
    	private javax.swing.JTextPane getJTextPane() {
    		if(viewer == null) {
    			viewer = new javax.swing.JTextPane();
    			viewer.setContentType("text/html");
    			viewer.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
    		}
    		return viewer;
    	}
    Ce JtextPane permet de mettre en gras souligne etc ...

    et je voudrais récupérer le code html dans un tableau de caractère ou dans une string ou autre (je veux juste le récuperer sans que l'utilisatueur ne le voit) afin de le renter dans la base de donnée pour le retraité plus tard dans l'appli.

    J'ai vu des piste avec "EditorKit " mais j'avoue ne pas avoir tout sasisi
    merci !!

  2. #2
    Membre régulier Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 83
    Points
    83
    Par défaut
    Un exemple de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    HTMLEditorKit kit = new HTMLEditorKit();
    htmlDoc = (HTMLDocument) (kit.createDefaultDocument());
    JTextPane pane = new JTextPane();
    pane.setEditorKit(kit);
    pane.setDocument(htmlDoc);
    et parés tu fais, un pane.getText() pour récupérer le texte sous format HTML

  3. #3
    Membre habitué
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Points : 172
    Points
    172
    Par défaut
    Je fais tout ca en effet mais quand j'apppui sur mon bouton le text arrive mais sans les balise html .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private JTextPane viewer = new JTextPane();
        private HTMLEditorKit k = new HTMLEditorKit();
        private HTMLDocument doc = (HTMLDocument) k.createDefaultDocument();
        private JEditorPane jEditorPane = new JEditorPane();
    et mon jtextPane est construit de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private JTextPane getJTextPane() {
    		if(viewer == null) {
    			viewer = new JTextPane();
    			viewer.setContentType("text/html");
    			viewer.setEditable(true);
    			viewer.setEditorKit(k);			
    			viewer.setDocument(doc);
    			viewer.setText("<p></p>");
    			viewer.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
     
    		}
    		return viewer;
    	}
    et un bouton me permet de recuperer le texte du jtextpane et de le mettre dans un jeditorpane :

    voila la fonction qu'appel mon bouton :

    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
    29
    30
    31
    32
    33
    34
    35
    public void showTree() 
     
    	{
    		Reader reader = null;
    		char[] chars = getSource();
    		reader = new CharArrayReader(chars);
    		Document docum = new PlainDocument();
    		try 
    		{
    			jEditorPane.getEditorKit().read(reader, docum, 0);
    		} 
    		catch (Exception ignoredForNow) 
    		{
    		}
    			jEditorPane.setDocument(docum);
     
     
    	}
     
    	public char[] getSource() 
    	{
    		CharArrayWriter writer = null;
    		writer = new CharArrayWriter();
    		try 
    		{
    			viewer.getEditorKit().write(
    				writer,
    				viewer.getDocument(),
    				0,
    				viewer.getDocument().getLength());
    		} catch (Exception ignoredForNow) 
    		{
    		}
    		return writer.toCharArray();
    	}
    et le soucis c'est que je recupere bien le text mais pas les balises qui correspondent

  4. #4
    Membre régulier Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 83
    Points
    83
    Par défaut
    A mon avis, ceux sont les méthodes write avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     viewer.getEditorKit().write(
                writer,
                viewer.getDocument(),
                0,
                viewer.getDocument().getLength());
    qui te renvoie le texte sans balise. Essayes avec un viewer.getText();

  5. #5
    Membre habitué
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Points : 172
    Points
    172
    Par défaut
    Eh bien en fait mon code fonctionne mais dans mon constructeur j'appelle une methode init qui construit toute linterface graphique .

    et il faut que je mette les methode k et doc avant et non dans la construction du JTextPane

    Le Constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /**
             * Constructeur 
             */
    	public Section_Question() {
    		super();
    		viewer.setEditorKit(k);			
    		viewer.setDocument(doc);
    		initialize();
    	}
    Le 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
    /**
             * Methode jTextPane
             */
    	private JTextPane getJTextPane() {
    		if(viewer == null) {
    			viewer = new JTextPane();
    			viewer.setContentType("text/html");
    			viewer.setEditable(true);
    			//viewer.setEditorKit(k);			
    			//viewer.setDocument(doc);
    			viewer.setText("<p></p>");
    			viewer.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
     
    		}
    		return viewer;
    	}

    Pourquoi ?? et bien bonne question je ne sais pas mdrrrrrrr

    En tout cas merci pour tes réponses et merci de ton aide !

  6. #6
    Membre régulier Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 83
    Points
    83
    Par défaut
    Est ce que lorsque tu rentres dans ta méthode getJTextPane, tu es sùr que viewer est null. Car le problème qui s'est ptet posé c'est qu'il n'était jamais null et donc du coup pas de setEditorKit()

  7. #7
    Membre habitué
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Points : 172
    Points
    172
    Par défaut
    je n'avais regardé de ce cote mais en effet c'est pertinent :

    Mais je crée une nouvelle instance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private JTextPane viewer = new JTextPane();
    Donc il est null;

    J'ai quand meme essaye de mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private JTextPane viewer = null;
    Mais ca ne change rien
    Mais en effet etant donne que je test si le JtextPane est null :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private JTextPane getJTextPane() {
    		if(viewer == null) {
    			viewer = new JTextPane();
    			viewer.setContentType("text/html");
    			viewer.setEditable(true);
    			//viewer.setEditorKit(k);			
    			//viewer.setDocument(doc);
    			viewer.setText("<p></p>");
    			viewer.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
     
    		}
    		return viewer;
    	}
    Si il ne rentrait pas dedans l'editorKit n'existait pas .
    Bien vu !

    De toute facon j'ai mis ça dans le constructeur , ca fait un peu crade mais bon ...

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

Discussions similaires

  1. Récupérer le contenu HTML d'un JTextPane
    Par doobinay dans le forum Composants
    Réponses: 3
    Dernier message: 30/12/2010, 16h45
  2. [JTextPane] Affichage et réaction à un lien HTML
    Par willowII dans le forum Composants
    Réponses: 1
    Dernier message: 06/10/2005, 20h29
  3. afficher une phrase dans le HTML a partir du javascript
    Par amelhog dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/08/2005, 17h02
  4. Afficher du XML avec du HTML
    Par BipBip2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 05/04/2005, 10h45
  5. Récupérer le code HTML d'une page avec Delphi 7
    Par PsyKroPack dans le forum Web & réseau
    Réponses: 5
    Dernier message: 06/02/2003, 21h56

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