2016-06-27 4 views
0

J'ai un JTextPane dans mon application et je prépare quelques styles pour différents mots/lettres. Ces styles sont appliqués via setCharacterAttributes. Maintenant, je prévois de styler l'arrière-plan de certains styles: Si un style définit un arrière-plan (disons gris) et que je veux adoucir les coins (coins ronds avec par exemple 3px).JTextPane: Quel est le rendu de/pour setCharacterAttributes?

Existe-t-il un moyen d'ajouter un rendu spécial utilisé dans setCharacterAttributes? Ou, recommandez-vous HighlightPainter ajouté via pane.getHighlighter().addHighlight(...)?

+0

Vous prévoyez d'adoucir le coin des caractères ?? – Sharcoux

+0

@Sharcoux: Non, je prévois d'avoir un fond (disons gris) avec une police noire. Le fond devrait avoir de beaux coins arrondis. – Markus

Répondre

1

Ok, Votre question n'est pas très claire, mais si je comprends bien, vous avez l'intention de personnaliser le comportement par défaut des propriétés d'arrière-plan sur les caractères. Vous décrivez 2 approches, et l'une est probablement beaucoup plus facile que l'autre.

1) Basé sur les attributs de caractère (complexe): Vous devez définir votre comportement en remplaçant la méthode paint dans javax.swing.text.GlyphView. Ensuite, vous devrez modifier ViewFactory de votre EditorKit pour qu'il prenne en compte votre modification. Je ne recommanderais pas cette approche.

2) Basé sur les points forts (plus facile): Vous devez définir un nouveau javax.swing.text.Highlighter.HighlightPainter qui peint les bords arrondis comme vous le souhaitez. Ensuite, vous devez trouver chaque ensemble de texte où un arrière-plan est défini. Vous supprimez l'arrière-plan et ajoutez votre surligneur personnalisé à la place. Vous pouvez optimiser le processus, mais je pense que vous avez déjà cette partie.

+0

Merci pour votre réponse. Je vais aller pour la 2ème solution. La première solution semble lourde mais très professionnelle. La prochaine fois je vais essayer d'ajouter une image. – Markus