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 :

[JTextArea] Modifier la mise en page d'un mot unique


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué Avatar de minus
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 153
    Points : 177
    Points
    177
    Par défaut [JTextArea] Modifier la mise en page d'un mot unique
    Bonjour a tous,

    Dans mon programme j'ai un JTextArea principal dont je voudrais changer certaines parties. J'ai un listener qui me permet apres selection d'un mot et d'un clic droit de faire apparaitre une serie d'options.

    Mon probleme se situe au niveau de la modification de la couleur/mise en forme d'un mot précis apres sa selection.
    Etant un String, je ne peux pas y appliquer les methodes de type setColor() ou autre.
    Auriez vous une idée sur la classe à employer?

    Merci d'avance pour vos suggestions.


    Edit : Il s'agit en fait de pouvoir réaliser certaines des options que l'ont trouve dans un editeur de texte classique.
    Science sans conscience n'est que ruine de l'âme

  2. #2
    Futur Membre du Club
    Inscrit en
    Août 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Salut,

    je travaille également sur un éditeur en ce moment, je peux surement t'aider.
    Premièrement, il te faut définir un style à appliquer sur ton texte sélectionné, à l'aide des classes de javax.swing.text :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SimpleAttributeSet _STYLE = new SimpleAttributeSet();
    StyleConstants.setForeground( _STYLE, Color.BLUE); // texte en bleu
    StyleConstants.setBold( _STYLE, true); // texte en gras
    StyleConstants.setItalic(_STYLE, false); // texte en italique
    Ensuite il te faut utiliser les méthodes de la classe DefaultStyledDocument :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    JTextArea ta = new JTextArea();
    ta.getDocument().setCharacterAttributes(
                    offset,   // offset du 1er caractère du texte à mettre en forme
                    length,   // longueur du texte à mettre en forme
                    _STYLE,   // style à appliquer
                    true );   // Overriding
    L'offset de ton 1er caractère se récupère via la méthode getSelectionStart().
    La longueur de la chaîne à mettre en forme se calcule grâce à la méthode getSelectionEnd() ou getSelectedText().length().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    JTextArea ta = new JTextArea();
    int start = ta.getSelectionStart();
    int end = ta.getSelectionEnd();
    ta.getDocument().setCharacterAttributes( start, end - start, _STYLE, true );
    Avec ça, tu devrais logiquement t'en sortir.
    When the seagulls follow the troiler, it's because they think that sardins will be thrown into the sea.
    [ EC ]

  3. #3
    Membre habitué Avatar de minus
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 153
    Points : 177
    Points
    177
    Par défaut
    Merci beaucoup, j'essaye ca de suite
    Science sans conscience n'est que ruine de l'âme

  4. #4
    Membre habitué Avatar de minus
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 153
    Points : 177
    Points
    177
    Par défaut
    Quand je met ton code, ca me sort l'erreur suivante : The method setCharacterAttributes(int, int, SimpleAttributeSet, boolean) is undefined for the type Document

    Je trouve pas pour quel type autre que document cette methode est disponible...
    Science sans conscience n'est que ruine de l'âme

  5. #5
    Membre habitué Avatar de minus
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 153
    Points : 177
    Points
    177
    Par défaut
    Alors, j'ai enfin réussi à régler ce probleme

    Tout d'abord, dans un tel cas, il ne faut pas utiliser un JTextArea comme je le croyais, mais un JTextPane.

    Voila les modifications que j'ai apporté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    JTextPane ta = new JTextPane();
    int start = ta.getSelectionStart();
    int end = ta.getSelectionEnd();
    DefaultStyledDocument doc = (DefaultStyledDocument) ta.getDocument ();
    doc.setCharacterAttributes( start, end - start, _STYLE, true );
    FAQ developpez.com : Comment avoir un éditeur de texte avec plusieurs styles de mise en page ?

    Merci encore pour ton aide Peewee
    Science sans conscience n'est que ruine de l'âme

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

Discussions similaires

  1. [XL-2010] Créer une macro pour modifier la mise en page
    Par tben08 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/01/2013, 20h51
  2. Modifier la mise en page d'une partie \part
    Par Fener dans le forum Mise en forme
    Réponses: 12
    Dernier message: 23/07/2012, 09h22
  3. Div qui modifie la mise en page!
    Par grenoult dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/02/2008, 12h23
  4. Pb include qui modifie ma mise en page
    Par Lolie11 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 21/05/2007, 10h49
  5. [Applet] Modifier dynamiquement la mise en page
    Par Amnesiak dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 28/09/2004, 11h49

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