Estoy desarrollando un editor WYSIWYG RTF simple en Java y tengo un pequeño problema. Necesito poder sincronizar los botones de alternancia de selección de estilo (como negrita, cursiva, subrayado) con la selección de texto de los usuarios. Por ejemplo, si la selección de texto actual es simple, los botones de alternancia en negrita, cursiva y subrayado no están seleccionados, pero cuando el usuario selecciona texto en negrita y subrayado, se seleccionan los botones de alternancia negrita y subrayado.JTextPane Sincronizar IU de selección de estilos Problema
Ahora estoy bastante seguro de que JTextPane.getInputAttributes()
me da los atributos de selección que quiero, pero hay un problema con la escucha de los eventos de actualización de caret. El problema es que el oyente caret adjunto al JTextPane
parece llamarse DESPUÉS de que se produzca el cambio de atributo de entrada. Entonces la selección siempre está un paso atrás. Es decir, ¡debo seleccionar el texto dos veces antes de que se actualicen los botones de alternar!
El código importante aquí es:
textPane.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent e) {
syncAttributesWithUI(textPane.getInputAttributes());
}
});
Y:
private void syncAttributesWithUI(AttributeSet attributes) {
boldButton.setSelected(StyleConstants.isBold(attributes));
italicButton.setSelected(StyleConstants.isItalic(attributes));
underlineButton.setSelected(StyleConstants.isUnderline(attributes));
}
Gracias de antemano!
¿Su pregunta ha sido respondida? Si no, considere publicar un SSCCE –