Je développe un éditeur RTF WYSIWYG simple en Java et j'ai un petit problème. Je dois être en mesure de synchroniser les boutons bascule de sélection de style (tels que gras, italique, souligné) à la sélection de texte des utilisateurs. Par exemple, si la sélection de texte en cours est claire, les boutons en gras, en italique et soulignés ne sont pas sélectionnés, mais lorsque l'utilisateur sélectionne du texte en gras et souligné, les boutons en gras et soulignés sont sélectionnés.JTextPane Synchroniser l'interface de sélection de style Problème
Maintenant, je suis assez sûr que JTextPane.getInputAttributes()
me donne les attributs de sélection que je veux, mais il y a un problème avec l'écoute des événements de mise à jour de caret. Le problème est que l'écouteur caret attaché au JTextPane
semble s'appeler APRÈS la modification de l'attribut d'entrée. Donc, la sélection est toujours un pas en arrière. Autrement dit, je dois sélectionner le texte deux fois avant que les boutons à bascule soient mis à jour!
Le code important est ici:
textPane.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent e) {
syncAttributesWithUI(textPane.getInputAttributes());
}
});
Et:
private void syncAttributesWithUI(AttributeSet attributes) {
boldButton.setSelected(StyleConstants.isBold(attributes));
italicButton.setSelected(StyleConstants.isItalic(attributes));
underlineButton.setSelected(StyleConstants.isUnderline(attributes));
}
Merci à l'avance!
Avez-vous répondu à votre question? Si non, pensez à poster un SSCCE –