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

Java Discussion :

Récupérer un style appliqué sur un caractère dans un JTextPane


Sujet :

Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Points : 13
    Points
    13
    Par défaut Récupérer un style appliqué sur un caractère dans un JTextPane
    Bonjour a tous,

    Je vous explique brièvement mon problème :
    Avec l'IUT, nous devons faire un projet. Dans ce projet, je dois créer un éditeur de texte, en java, avec les fonctions basiques :
    -gras, italic, souligné
    -centrer, gauche, droite, justifier
    -lien
    -image
    -taille et couleur police.

    Alors voila mon problème : je n'arrive pas à récupérer le style que j'applique à un caractère.
    Si c'était que ça, se serait trop simple comme problème. Non, en réalité, et je n'ai vraiment aucune idée du pourquoi du comment, mais des fois, cela marche, et des fois, non.
    Je m'explique :
    Quand l'utilisateur sélectionne une partie de texte et décide la mettre en gras ou autre, cela marche. Idem pour italic ou souligné. Quand il relique sur gras avec le même texte, et c'est la ou est mon problème, des fois, il enlève le mode gras (quand sa marche), et des fois non (quand sa marche pas). Et je ne comprend pas pourquoi. Alors je me suis dit que ça venait des caractères, du fait que je n'arrive pas à récupérerez style que je leur ai appliqué. Mais pourquoi cela ne me le fait pas tout le temps?
    Je vous envoie le code pour essayez de voir d'ou vient mon erreur.
    Encore une chose, puisque c'est un projet, il est difficile de vous fournir une version testable.

    voici le code en question, la ou je traite mes styles:
    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
     
    this.document=textPaneTexte.getStyledDocument();
     
            String textSelect = textPaneTexte.getSelectedText();
            int position = this.textPaneTexte.getCaretPosition();
     
            this.style=this.document.getLogicalStyle(textPaneTexte.getCaretPosition());        
            this.attributes = new SimpleAttributeSet(this.textPaneTexte.getCharacterAttributes());
     
            System.out.println("avant update");
            for (Enumeration en = this.attributes.getAttributeNames(); en.hasMoreElements() ;) {
                System.out.println(en.nextElement());
            }
     
     
            if(e.getSource() == this.buttonTextBold) {
                if(StyleConstants.isBold(this.attributes))
                    this.attributes.addAttribute(StyleConstants.CharacterConstants.Bold, Boolean.FALSE);
                else
                    this.attributes.addAttribute(StyleConstants.CharacterConstants.Bold, Boolean.TRUE);
            }
            else if(e.getSource() == this.buttonTextItalic) {
                if(StyleConstants.isItalic(this.attributes))
                    this.attributes.addAttribute(StyleConstants.CharacterConstants.Italic, Boolean.FALSE);
                else
                    this.attributes.addAttribute(StyleConstants.CharacterConstants.Italic, Boolean.TRUE);
            }
            else if(e.getSource() == this.buttonTextUnderline) {
                if(StyleConstants.isUnderline(this.attributes))
                    this.attributes.addAttribute(StyleConstants.CharacterConstants.Underline, Boolean.FALSE);
                else
                    this.attributes.addAttribute(StyleConstants.CharacterConstants.Underline, Boolean.TRUE);
            }
            else if(e.getSource() == this.comboBoxPolice) {
                StyleConstants.setFontFamily(this.style, (String)this.comboBoxPolice.getSelectedItem());
            }
            else if(e.getSource() == this.comboBoxTailleTexte) {
                StyleConstants.setFontSize(this.style, Integer.parseInt((String)this.comboBoxTailleTexte.getSelectedItem()));
            }
     
            this.textTampon = textSelect;
            this.previousPosition = position;
     
     
     
            this.textPaneTexte.setCharacterAttributes(attributes, true);
     
            System.out.println("fin\napres update:");
            for (Enumeration en = this.attributes.getAttributeNames(); en.hasMoreElements() ;) {
                System.out.println(en.nextElement());
            }
    Mes System.out... me servent a tester, a voir si mon attribut enregistre bien les différents style que j'applique a mes caractères.
    Ce que je me demande, c'est pourquoi mon style n'est pas enregistrer, des fois...
    Je vous demande pas de debugge,r car sans exemple, c'est impossible. Par contre, si vous pouviez me dire comment vous feriez, et comment faire, se serait vraiment génial.

    N'hésitez pas a me dire si un truc vous manque. Merci d'avance.

    Cordialement

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Points : 13
    Points
    13
    Par défaut UP!
    Bonjour a tous,

    un petit up. Il sera utile j'espère. J'ai vraiment besoin de votre aide.

    Cordialement.

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Points : 13
    Points
    13
    Par défaut Trouvé d'ou venait le bug !
    Re-Bonjour,

    Alors voila une petite explication supplémentaire à mon problème :
    j'utilise la méthode getCharacterAttributes(), qui récupère le style appliqué à un caractère pour la position sélectionnée.
    Mon problème, c'est que quand je sélectionne un texte de Gauche à Droite, je n'arrive pas appliquer plusieurs styles.
    Par contre, quand je sélectionne de Droite à Gauche, là ça marche et je peux appliquer plusieurs styles à mon texte.

    Comment cela se fait-il ?

    Merci d'avance.

Discussions similaires

  1. [MySQL] Recherche sur cinq caractères dans champ Bdd
    Par casimirine dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/05/2013, 11h20
  2. Réponses: 2
    Dernier message: 19/04/2013, 13h38
  3. Minutes affichés sur deux caractères dans une formule
    Par QUEEQEG dans le forum Conception
    Réponses: 5
    Dernier message: 10/05/2011, 08h33
  4. Réponses: 5
    Dernier message: 08/02/2010, 15h07
  5. Réponses: 5
    Dernier message: 08/03/2006, 22h20

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