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 :

affichage de string dans JEditorPane


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 22
    Par défaut affichage de string dans JEditorPane
    salut à tous,

    je désire afficher dans un JEditorPane une chaine formatée avec du HTML .
    ensuite afficher des String ligne par ligne.

    et quand on fait un "getText()" sur le JEditorPane ayant un HTMLEditorKit pour récupérer l'ancien contenu et y ajouter des string, on obtient une chaîne de caractère contenant des balises HTML, en particulier <HTML><BODY> et </BODY></HTML> , donc pas possible d'ajouter une chaîne de caractères après ces deux dernières balises.

    comment faire pour que le JEDitorPane contiènne en chaque ligne un simple String ou un String formaté avec du HTML ?comment assurer le retour à la ligne?en effet ça n' a pas marché ni avec \n ni <br>.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    editorpane.setText("<html><body>A<sub>n</sub></body></html>");
    editorpane.setText(editorpane.getText()+"salut");
    merci et a+

  2. #2
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    sans etre un expert dans la gestion des blocs de texte, je pense que tu pourrais t'en sortir en modifiant ton document de type HTMLDocument via les méthodes :

    insertAfterEnd(Element elem, String htmlText)
    insertAfterStart(Element elem, String htmlText)
    insertBeforeEnd
    (Element elem, String htmlText)
    insertBeforeStart(Element elem, String htmlText)

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 22
    Par défaut
    salut !

    merci pour la réponse, j'ai un peu fouillié sur le net mais j'ai pas pu comprendre ta solution.
    est ce que tu peux clarifié un peu .

    merci et a+

  4. #4
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    solution un peu chiante (et un poil bourrin) mais qui montre qu'on peut faire pas mal de chose :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
        public static void main(String[] args)
        {
            javax.swing.JFrame frame = new javax.swing.JFrame();
            frame.setDefaultCloseOperation(javax.swing.JFrame.DISPOSE_ON_CLOSE);
     
            JTextPane pane = new JTextPane();
            pane.setContentType("text/html");
     
            pane.setText("<html><body>A<sub>n</sub></body></html>");
     
            System.out.println("editor kit : " + pane.getEditorKit());
            System.out.println("document : " + pane.getDocument());
     
            HTMLDocument doc = (HTMLDocument)pane.getDocument();
     
            /** si tu veux insérer la valeur salut après le 'n' */
            Element[] roots = doc.getRootElements();
            if ( roots != null )
            {   for(int i = 0 ; i < roots.length; i++)
                {   Element root = roots[i];
     
                    System.out.println("\troot is : " + root.getClass() + " " + root.getName());
     
                    for(int j = 0; j < root.getElementCount(); j++)
                    {   Element current = root.getElement(j);
                        System.out.println("\t\tchild is : " + current.getClass() + " " + current.getName());
     
                        for(int k = 0; k < current.getElementCount(); k++)
                        {   Element currentA = current.getElement(k);
                            System.out.println("\t\t\tchild is : " + currentA.getClass() + " " + currentA.getName());
     
                        }
     
                        if ( current.getName().equals("body") )
                        {   
                            try
                            {   doc.insertBeforeEnd(current, "Salut"); }
                            catch (BadLocationException ex)
                            {   ex.printStackTrace(); }
                            catch (IOException ex)
                            {   ex.printStackTrace(); }
                        }
                    }
                }
            }
     
            frame.getContentPane().add(new javax.swing.JScrollPane(pane));
     
            frame.setSize(200, 200);
            frame.setVisible(true);
        }

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 22
    Par défaut imprimer le JEditorPane
    salut,

    merci pour le code j'ai parvenu à une autre solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     
    editorpane.setText(innerHTML(pane.getText())+"<br>A<sub>n</sub></br></body></html>");
     
    //méthode pour extraire la chaine formatée par du html
     
    public String innerHTML(String in) {      
      String tmp=in.toLowerCase();      
      int i=tmp.indexOf("<body>")+6;      
       int j=tmp.indexOf("</body>");      
       return in.substring(i,j);  
     }

    mon problème maintenat est que je souhaite imprimer le contenu du JEditorPane .

    Est-ce que quelqu'un a une idée?
    @+

  6. #6
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    regarde sur le forum, il doit y avoir une paire de questions à ce sujet

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

Discussions similaires

  1. Affichage d'un melange d'entier et string dans un label
    Par zodiak66 dans le forum Débuter
    Réponses: 4
    Dernier message: 03/06/2011, 22h28
  2. Réponses: 10
    Dernier message: 07/10/2009, 12h15
  3. affichage résultats sous forme de string dans un fenêtre
    Par moi_david dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 11/06/2009, 11h19
  4. [BIRT] Affichage 'List<String>' dans un 'Table' de birt
    Par gdev7 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 29/04/2009, 16h55
  5. Affichage de String au lieu d'Integer Dans un DBCombo!
    Par soror dans le forum Bases de données
    Réponses: 5
    Dernier message: 17/07/2007, 12h37

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