webForumDet fria alternativet

Ändra färg på text i en JTextPane

3 svar · 321 visningar · startad av jme

jmeMedlem sedan maj 20012 237 inlägg
#1

Hej!

Jag undrar hur man ändrar utseendet på text(fet, kursiv, storlek, färg osv) i en JTextPane/JTextArea eller liknande?

Jag hittar bara metoden setForeground() men den ändrar färgen på all text.

Vilken typ av textarea skall jag använda mig utav? Om jag vet rätt så kan man inte ändra på text-stilen i en JTextArea...

phonkworksMedlem sedan juli 2001228 inlägg
#2

Sätta textfärg och font:

jTextArea.setForeground(new java.awt.Color(146, 189, 161));
jTextArea.setFont(new java.awt.Font("Courier New", java.awt.Font.BOLD, 14));

Det går bra att ändra style. Tex Bold, Italic om det är det du menar...

mvh
phonk

ViktorMedlem sedan aug. 20021 752 inlägg
#3

Jag tror att du måste använda "setSelectionStart", "setSelectionEnd" och "setSelectedTextColor".

/Viktor

jmeMedlem sedan maj 20012 237 inlägg
#4

phonkworks:

jo men din kod sätter den färgen på all text och det vill jag inte.
T ex all text som kommer från chat-servern skall vara rosa och alla privata meddelanden skall vara röda osv. Detta är vad jag vill åstadkomma (typ "syntax coloring").

Nu så hittade jag en lösning som dock enbart fungerar med JTextPane.


doc = new DefaultStyledDocument();

textPane = new JTextPane(doc);

sen använder man sig utav

item.addActionListener (new
      StyledEditorKit.ForegroundAction (
        "set-foreground-yellow", Color.yellow));

item är en JMenuItem

Då fungerar det. Jag kan välja en del av texten och ändra dess stil.

Men jag lyckas bara få detta fungera om jag kör koden från menyn.

Men ett nytt problem uppstår genast.

Jag skall implementera detta i min webchat:

Jag märkte att varje gång jag lägger till ny text i en JTextPane så raderas all stil och texten blir vanlig(dvs svart) igen.

Jobbigt!


JTextPane TP;   // där all text visas
JTextField TF;    // där all text skrivs in ( om i en chat-klient)

TP.setText(TP.getText() + "\n" + TF.getText() );

Ovanstående metod sätter texten till detsom redan finns i TP samt lägger till det som man skrev i TF. Varje gång denna metod anropas så raderas all stilförändringar jag gjort. I en JTextPane så finns metoden add() och setText(). JTextPane har bara setText().

viktor:

setSelectionStart(), setSelectionEnd() resp. setSelectionColor() sätter bara vilken del av texten skall markeras samt vilken färg markeringen skall ha...

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)