Kolory czcionki

0

Mam dość prozaiczny problem. Napisałem coś w rodzaju czat-a w Javie i chciałbym mieć możliwość pisania jak i dostawania wiadomości w różnych kolorkach czcionki.
Da się formatować klor (i nie tylko) czcionki w JTextArea (tak aby każda linia napisów mogła być w innym kolorze) ?
Jesli nie to jaki inny komponent mozna zastosowac?

0

jtextarea jest za słaby i umożliwia wyświetlanie czcionki tylko w jednym kolorze
jeśli chcesz więcej kolorów użyj lepiej np. jeditorpane
jeśli ustawisz mu np. coś takiego .setContentType("text/html");
wówczas możesz tam pisać używając tagów htlm w których możesz zmieniać sobie kolory np setText("<html><font color=\"red\">Czerwony tekst</font>");

zajrzyj zresztą tam, to zobaczysz możliwości różnych komponentów
http://java.sun.com/docs/books/tutorial/uiswing/components/text.html

i jeszcze jedno...dodawanie tekstu (nie obsługuje .append) i robi się to tak:

Document doc=ep.getDocument(); //ep to JEditorPane
try {
doc.insertString(doc.getLength(),"Cośtam jeszcze",null);
ep.setDocument(doc);
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

0

Dzieki zaraz to obadam, ale jeszcze jedno pytanie. W JTextArea moge okreslij domysla wielkosc pola tekstowego poprzez np. JTextArea(5,15)
Da sie to wykonac na komponecie JEditorPane ?

0

raczej nie wydaje mi się
co najwyżesz to ustalasz mu rozmiar na sztywno przez setSize, ale wówczas musisz kombinować z layoutami, żeby się nie rozciągał na cały dostępny obszar

0

Czybym cos robil niepoprawnie ten "append" ?

C:\Java\javawork\Przyklady\Rozdzial09\OknoCzcionek\OknoCzcionek.java:318: cannot find symbol
symbol  : class Document
location: class ThreadedEchoHandler
			                 Document doc = RamkaCzcionek.przyklad.getDocument();     //ep to JEditorPane

0

Ok juz w porządku trzeba było zrzutować :):
Document doc = (Document) przyklad.getDocument();

0

Niestety ostatecznie jest jeden problem. setText dziala jak nalezy, lecz po setDocument nie interpretuje znacznikow tylko wyswietli je.

	 Document doc = (Document) przyklad.getDocument();     //ep to JEditorPane
	                   try {
	                          doc.insertString(doc.getLength(),"<html><u>Cośtam jeszcze</u></html>",null);
	                          przyklad.setDocument(doc);
						   }
	                  catch (BadLocationException e)
	                  {
	                          
	                         e.printStackTrace();
	                  } 

user image</image>

0

Użyj zamiast Document HTMLDocument:

JEditorPane ep;
HTMLDocument ht=new HTMLDocument();

i następnie jak coś dodajesz to w ten sposób:

ht.insertString(ht.getLength(),"<font color=\"red\">Czerwony tekst</font>",null);
ep.setText(ht.getText(0,ht.getLength()));

u mnie to działa. Nie wiem czy jest to najwydajniejsze (najlepsze) rozwiązanie ale chodzi ;)

0

Oki dzieki WIELKIE hula. Mniejsza z tym, że nienajszybciej ;) Swoja droga mogli by dodac do tego metode append :|

0

coz za problem? Tworzysz klase dzidziczaca po JEditorPane i dorabiasz wlasne append... :]

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