Wpis z mikrobloga

Mireczki z #java #swing #programowanie

Mam problem z formatowaniem tekstu w JTextPane. Generalnie piszę edytor tekstu z GUI i formatowanie sprawia mi ból (tak jak korzystanie ze swinga, ale tego nie obejdę).

Otóż robię sobie przyciski do formatowania, które reagują na zaznaczony tekst i w zależności od przekazanych interfejsów, wybierają odpowiednie formatowanie.

Metody odpowiadające za aplikowanie/usuwanie formatowania:
https://github.com/Viters/TextEditor/blob/master/src/FormatTextEditor.java#L17

Konstruowanie przycisków:
https://github.com/Viters/TextEditor/blob/master/src/OptionsToolBar.java#L87

Przykładowa implementacja przycisku (pogrubienie):
https://github.com/Viters/TextEditor/blob/master/src/OptionsToolBar.java#L33

Mój problem jest taki:
Gdy zaznaczę tekst i nacisnę pogrubienie - to tekst się pogrubia. Gdy zaznaczę od nowa i kliknę pogrubienie - to jest ono usuwane. Ale gdy zaznaczę tekst i kliknę dwa razy pogrubienie - to się ono nie usunie. Problem jest taki, że jeżeli nie "odświeżę" zaznaczenia, to StyleCosntants.isBold(AttributeSet) zwraca mi niezaktualizowaną wartość. Tzn. jeżeli przed zaznaczeniem nie było pogrubione, to zwróci false i pogrubienie nastąpi. Ale potem cały czas będzie zwracać false, więc nie usunie pogrubienia, dopóki nie odświeżę zaznaczenia.

Wtf?
  • 2