Kontrolka z udostępnionym formatem

0

Witam

Potrzebuje kontrolki w Swingu do wyświetlania tekstu w wielu liniach (coś w stylu JEditPane).
Ale chciałbym z pociomu kodu edytować ten tekst, chodzi mi o pogrubianie konkretnych linii, możę zwiększanie czcionki, zmiana koloru czcionki w konkretnej linii (czyli coś w stylu pliku HTML ukrytego pod kontrolką).

Jak coś takiego zrobić i jak to zorganizować ?

0

JEditorPane pozwala na załączanie jako treści kodu HTML, a nawet udostępnia namiastkę DOM (czyli pozwala na dynamiczne zmiany).

Samą kontrolkę inicjujesz po prostu z odpowiednim typem zawartości:

protected final JEditorPane messagesPane = new JEditorPane("text/html", "<div id=\"messages\"></div>");

A co do dynamicznej edycji to jest z tym trochę zabawy, więc jeżeli sobie nie poradzisz z dokumentacją (patrz metoda JEditorPane.getDocument() i klasa HTMLDocument), to zrób to na StringBuilderze i każdorazowym ustawianiu całej treści kontrolki od nowa (może nie być ciekawie potem z wydajnością).

0

Na prędkości raczej mi nie zależy, no bo to będą teksty kilku linijkowe, a zmiana tekstu będzie możę koło 1 sekundy. Więc w sumie myśle aby stworzyć wszystkie potrzebne wersje w plikach HTML i je po prostu wczytywać z pliku i podkładać.

Tylko mam pytanie, jak i czy w ogóle można, zaszyć taki plik HTML lub XML w skompilowanej wersji aplikacji ??
Jeśli można to w jaki sposób się do niego odwołać, znaczy jaką ścieżkę podać podczas szukania pliku do wczytania ?

0

Ale nie ma potrzeby wczytywania treści z osobnych plików (chociaż można, ale po co) - lepiej po prostu podmieniaj treść przez setText() - musisz tylko zainicjować komponent tak, jak ja to podałem, albo przez setContentType().

Jeżeli chcesz koniecznie z plików, to setPage() i wczytywanie zasobów z jara poprzez NazwaKlasy.class.getResource().

1 użytkowników online, w tym zalogowanych: 0, gości: 1