Ich entwickle einen einfachen WYSIWYG RTF Editor in Java und habe ein kleines Problem. Ich muss in der Lage sein, die Auswahlschaltflächen für die Stilauswahl (z. B. fett, kursiv, unterstrichen) mit der Textauswahl des Benutzers zu synchronisieren. Wenn z. B. die aktuelle Textauswahl leer ist, werden die Umschalttasten für Fett, Kursiv und Unterstrichen nicht ausgewählt. Wenn der Benutzer jedoch fett und unterstrichenen Text auswählt, werden die Umschalttasten für Fettdruck und Unterstreichen ausgewählt.JTextPane Synchronize Style Auswahl UI Problem
Jetzt bin ich mir ziemlich sicher, dass JTextPane.getInputAttributes()
mir die Auswahl Attribute ich möchte, aber es gibt ein Problem mit dem Abhören für Caret Update-Ereignisse. Das Problem ist, dass der Caret-Listener, der an die JTextPane
angehängt ist, scheinbar NACH dem Wechsel des Eingabeattributs aufgerufen wird. Die Auswahl ist also immer einen Schritt zurück. Das heißt, ich muss den Text zweimal auswählen, bevor die Umschalttasten aktualisiert werden!
Der wichtige Code ist hier:
textPane.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent e) {
syncAttributesWithUI(textPane.getInputAttributes());
}
});
Und:
private void syncAttributesWithUI(AttributeSet attributes) {
boldButton.setSelected(StyleConstants.isBold(attributes));
italicButton.setSelected(StyleConstants.isItalic(attributes));
underlineButton.setSelected(StyleConstants.isUnderline(attributes));
}
Vielen Dank im Voraus!
Wurde Ihre Frage beantwortet? Wenn nicht, erwägen Sie post einen SSCCE –