2016-06-27 35 views
0

Ich habe eine JTextPane in meiner Anwendung und ich bereite einige Stile für verschiedene Wörter/Buchstaben vor. Diese Stile werden über setCharacterAttributes angewendet. Jetzt plane ich, den Hintergrund einiger Stile zu stylen: Wenn ein Stil einen Hintergrund definiert (zB grau) und ich die Ecken weicher machen möchte (runde Ecken mit zB 3px).JTextPane: Was ist der Renderer von/für setCharacterAttributes?

Gibt es eine Möglichkeit, einen speziellen Renderer hinzuzufügen, der in setCharacterAttributes verwendet wird? Oder empfehlen Sie HighlightPainter hinzugefügt über pane.getHighlighter().addHighlight(...)?

+0

Sie planen, die Ecke der Charaktere zu erweichen? – Sharcoux

+0

@Sharcoux: Nein, ich habe vor, einen Hintergrund (sagen wir grau) mit schwarzer Schrift zu haben. Der Hintergrund sollte schöne runde Ecken haben. – Markus

Antwort

1

Ok, Ihre Frage ist nicht sehr klar, aber wenn ich richtig verstehe, beabsichtigen Sie, das Standardverhalten der Hintergrundeigenschaften auf Zeichen anzupassen. Sie beschreiben 2 Ansätze, und einer ist wahrscheinlich viel einfacher als der andere.

1) Basierend auf Zeichenattributen (komplex): Sie müssen Ihr Verhalten definieren, indem Sie die paint-Methode in javax.swing.text.GlyphView überschreiben. Dann müssen Sie die ViewFactory Ihres EditorKit ändern, damit Ihre Änderung berücksichtigt wird. Ich würde diesen Ansatz nicht empfehlen.

2) Basierend auf Highlights (einfacher): Sie müssen einen neuen javax.swing.text.Highlighter.HighlightPainter definieren, der die runden Ränder nach Ihren Wünschen malt. Dann müssen Sie jeden Satz Text finden, wo ein Hintergrund festgelegt ist. Sie entfernen den Hintergrund und fügen stattdessen Ihren benutzerdefinierten Textmarker hinzu. Sie können den Prozess optimieren, aber ich denke, Sie haben diesen Teil bereits.

+0

Danke für Ihre Antwort. Ich werde für die 2. Lösung gehen. Die erste Lösung klingt umständlich, aber sehr professionell. Nächstes Mal werde ich versuchen, ein Bild hinzuzufügen. – Markus