2010-11-20 29 views
1

J'essaie de créer un éditeur de texte avec un JTextPane, mais je n'arrive pas à régler la couleur des textes sélectionnés. Voici le meilleur pourrait venir avec (mais, de toute évidence, ne fonctionne pas):Définition de la couleur du texte avec un JColorChooser

JMenuItem button = new JMenuItem("Set Color"); 
    toolbar.add(button); 

    button.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      Color c = JColorChooser.showDialog(frame,"Choose a color", getBackground()); 
      textPane.getSelectedText().StyledEditorKit.ForegroundAction("color",c); 
     } 
    }); 

Toutes les suggestions sur la façon d'obtenir ce à travailler? Ou une meilleure méthode pour le faire?

Merci

Répondre

2

getSelectedText() retourne juste une chaîne normale contenant le texte sélectionné; vous ne pouvez pas l'utiliser pour modifier les attributs du texte.

Je commencerais en utilisant SimpleAttributeSet et StyleConstants pour générer l'attribut de couleur, puis l'appliquer à la partie sélectionnée de votre texte:

SimpleAttributeSet attr = new SimpleAttributeSet(); 
StyleConstants.setForeground(attr, c); 
textPane.setCharacterAttributes(attr, false); 
+0

Cela a parfaitement fonctionné pour définir la couleur du texte sélectionné, maintenant la seule le problème est que je ne peux que définir la couleur en sélectionnant plus de texte et en le définissant à une couleur différente (plutôt que de simplement sélectionner une nouvelle couleur et en tapant avec ça). Des suggestions sur la façon d'y remédier? – Samsquanch

+0

@ user485418: Voir ma réponse éditée. C'est en fait plus simple qu'avant et je crois que cela devrait fonctionner à la fois pour le texte sélectionné et pour le texte tapé. :) – casablanca

+0

C'est parfait, merci beaucoup. – Samsquanch