# farbiger text in textarea/jtextarea



## biker126 (12. Okt 2004)

hallo

ich möchte verschieden farbigen text in einer textarea anzeigen. mit awt geht das wohl sowieso nicht, aber auch mit der JTextArea bzw. JTextComponent bzw. JComponent hab ich keine passende funktion gefunden...

gibt es sonst ne möglichkeit farbigen text in ne textarea zu schreiben? hab noch in der klasse "Font" geguckt aber auch dort nix gefunden...


----------



## abollm (12. Okt 2004)

biker126 hat gesagt.:
			
		

> hallo
> 
> ich möchte verschieden farbigen text in einer textarea anzeigen. mit awt geht das wohl sowieso nicht, aber auch mit der JTextArea bzw. JTextComponent bzw. JComponent hab ich keine passende funktion gefunden...
> 
> gibt es sonst ne möglichkeit farbigen text in ne textarea zu schreiben? hab noch in der klasse "Font" geguckt aber auch dort nix gefunden...



Also, verschiedenfarbener Text in einer JTextArea, das weiß ich momentan nicht. Aber farbiger Text inkl. Hintergrundbild, das geht schon rel. einach. Schau einfach hier und probier es aus:

```
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;

public class ImageBackground extends JViewport {
	public static void main(String[] args) throws IOException {
		JTextArea ta = new JTextArea();
		ta.setFont(new Font("Lucida Sans Typewriter", Font.BOLD, 12));
		ta.setOpaque(false);
		
		ta.setFont(new Font("Monospaced", Font.PLAIN, 12));
	    ta.setForeground(Color.BLUE);
        // TextAreas Farbe Translucent
        Color oldCol = ta.getSelectionColor();
        Color newCol = new Color(oldCol.getRed(), oldCol.getGreen(), oldCol.getBlue(), 128);
        ta.setSelectionColor(newCol);

	    JScrollPane textScroller = new JScrollPane(ta); 

		InputStream in = ImageBackground.class
				.getResourceAsStream("ImageBackground.java");
		ta.read(new InputStreamReader(in), null);
		JScrollPane sp = new JScrollPane();

		String url = "file:images/pv.gif";
		//String url = "file:images/bird.gif";
		sp.setViewport(new ImageBackground(ImageIO.read(new URL(url))));
		sp.setViewportView(ta);
		JFrame f = new JFrame("Farbiger Text auf Hintergrundbild");
		f.getContentPane().add(sp);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(500, 400);
		f.setLocationRelativeTo(null);
		f.show();
	}

	private BufferedImage image;

	public ImageBackground(BufferedImage image) {
		this.image = image;
		setBackground(Color.WHITE);   // hier Hintergrundfarbe anpassen

	}

	protected void paintComponent(Graphics g) {
		super.paintComponent(g);
		int x = (getWidth() - image.getWidth()) / 2;
		int y = (getHeight() - image.getHeight()) / 2;
		g.drawImage(image, x, y, null);
	}
}
```


----------



## foobar (12. Okt 2004)

```
myTextArea.setText("<html><font color=\"red\">hello</font> <font color=\"blue\">world</font></html>");
```


----------



## biker126 (12. Okt 2004)

cool, ich will nämlich schlussendlich sowieso eine html datei aus dem text machen...


----------



## meez (13. Okt 2004)

Schau auch hier:
http://www.java-forum.org/de/viewtopic.php?t=9448


----------



## biker126 (13. Okt 2004)

foobar hat gesagt.:
			
		

> ```
> myTextArea.setText("<html><font color=\"red\">hello</font> <font color=\"blue\">world</font></html>");
> ```



sry aber das funktioniert ned... hab ne ganze normale JTextArea und wenn den string setze mit genau der zeile da oben werden die html tags ganz normal als text ausgegeben anstatt dass der text formatiert wird....


----------



## Roar (13. Okt 2004)

um html darzustellen musst du eine JEditorPane benutzen:

```
JEditorPane ep = new JEditorPane();
ep.setContentType("text/html");
ep.setText("<html>[b]huhu[/b]</html>");
```


----------



## biker126 (13. Okt 2004)

dh. in ner JTextArea geht das gar ned?

habs mal in nem JLabel gebraucht, aber das kann man ja ned scrollen (oder?). werd mal gucken was die JEditorPane so alles kann. ich kenn das element gar ned... *g*


----------



## foobar (14. Okt 2004)

> dh. in ner JTextArea geht das gar ned?


Stimmt, die JTextarea kann keine HTMl darstellen.



> JTextArea can display and edit multiple lines of text. Although a text area can display text in any font, all of the text is in the same font. Use a text area to allow the user to enter unformatted text of any length or to display unformatted help information.


http://java.sun.com/docs/books/tutorial/uiswing/components/text.html


----------

