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 :

[JTextPane] & Component Swing


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Par défaut [JTextPane] & Component Swing
    Bonjour,
    J'ai trouvé comment ajouter des components directement dans mon JTextpane.
    Ce que j'aimerais faire c'est utiliser les css avec une page Html et ajouté directement un composent quand il trouve une balise de style définie.

    Quelque essais sur ce code :

    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
     HTMLEditorKit kit = new HTMLEditorKit();//kit s ur HTMLEditorKit
            HTMLDocument doc = (HTMLDocument) (kit.createDefaultDocument());
            jTextPane1.setEditorKit(kit);
            jTextPane1.setDocument(doc);
            jTextPane1.setContentType("text/html");
            StyleSheet css = kit.getStyleSheet();
            css.addRule("body {align : left; background-color: #84A2E8;}");
            css.addRule("body {font-size : 14pt; }");
            css.addRule("body {font-family : Sans Serif; }");
            css.addRule(".style1 {	color: #999933;	font-weight: bold;}");
            css.addRule(".style2 {	color: #009933;	font-weight: bold;}");
            css.addRule("div {margin-bottom: -20pt; }");      
            jTextPane1.addStyle("test1",null);        
            StyleConstants.setComponent(jTextPane1.getStyle("test1"),new Button("ee"));
            StyleConstants.setComponent(css.getStyle(".style1"),new Button("ggg"));        
            jTextPane1.setText("<html xmlns='http://www.w3.org/1999/xhtml'><head><title>Untitled Document</title></head>" +                
                    "<body><img src='http://www.google.fr/intl/fr_fr/images/logo.gif'><div align='center' class='style1'>cvvc</div></body></html>");
          try {         
             jTextPane1.addStyle("test1",null);        
            StyleConstants.setComponent(jTextPane1.getStyle("test1"),new Button("ee"));    doc.insertString(doc.getLength(),"cool",jTextPane1.getStyle("test1"));
            } catch (BadLocationException ex) {
                ex.printStackTrace();
            }
    Le ce code effectue bien la modification et applique les styles.

    Dans la suite du code je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    jTextPane1.addStyle("test1",null);        
    StyleConstants.setComponent(jTextPane1.getStyle("test1"),new Button("ee"));
     
    ...
     
    doc.insertString(doc.getLength(),"cool",jTextPane1.getStyle("test1"));
    Pour ajouter a la fin de mon document un style qui inclu un component.
    Si on reprend le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <html xmlns='http://www.w3.org/1999/xhtml'><head><title>Untitled Document</title></head>" +                
                    "<body><img src='http://www.google.fr/intl/fr_fr/images/logo.gif'><div align='center' class='style1'>cvvc</div></body></html>
    J'aimerais inclure directement le composent pour les styles 'style1' comme j'ai fait avec le insertString.
    Si vous avez une autre méthode plus simple, car le but et d'avoir un template, exemple une fenêtre de chat et remplace le nom de la personne par un composant Button...

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    en gros, tu voudrais faire correspondre des styles CSS avec les styles du JTextArea ? Ou j'ai mal compris ?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Par défaut
    Pas exactement. J'aimerais inclure directement dans l'interprétation du code une balise par exemple, %NOM% soit remplacer pour un JButton mais que le format du JTextpane reste un document html avec tous les avantages du CSS.
    J'ai trouvé facilement comment inclure des composants dans le JTextpane, mais la mise a forme du texte reste très basique , et impossible si l'on veux faire une mise en forme sympathiques similaire au css.

    Le bute de crée un page html template, avec des balites qui seront remplaces par des Components. Un peu comme la fenêtre de chat de jabber on l'on peu changer le style de l'affichage des messages simplement.

  4. #4
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Alors je ne suis pas très fort en composants texte, mais il me semble que tu dois te pencher du côté de HTMLDocument.
    Citation Envoyé par javadoc
    The element structure that is modeled by default, is built by the class HTMLDocument.HTMLReader [...] To change the structure one can subclass HTMLReader, and reimplement the method getReader(int) to return the new reader implementation.
    En gros, il faudrait que tu étendes la classe HTMLReader pour ajouter la nouvelle balise et créer un Element correspondant. Ca devrait suffire pour afficher un bouton dans le JTextPane, je crois.

    J'ai pas dit trop de c..ries ?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Par défaut
    Merci,
    Je vais essayer de faire cela, si je trouve je posterais a la suite la solution .


Discussions similaires

  1. [Swing] Centré un texte dans un JTextPane
    Par titi_22 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 24/06/2011, 16h09
  2. Réponses: 10
    Dernier message: 15/03/2006, 16h27
  3. [Swing] Forcer la tailler d'un Component
    Par yelbied dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 02/03/2006, 15h31
  4. [swing]JTextPane sans line wrap automatique
    Par oca dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 21/02/2006, 08h40
  5. Probleme d'actualisation d'un Component Swing
    Par bolivari dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 27/01/2006, 15h17

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