# JTextPane und StyledDocument



## Prometheus (19. Nov 2006)

Hallo
Ich möchte in einem JTextPane an bestimmten Stellen den Text einfärben, Schriftart und Größe ändern und sowas. Ich hab zumindestens schonmal raus gefunden, dass man dafür nen StyledDocument braucht. Allerdings weiß ich dann nicht weiter. Ich hab in einer Referenz die Methode setCharacterAttributes gefunden aber so richtig weiter hat mich das nicht gebracht.
Kennt jemand nen gutes Tutorial wo das alles gut beschrieben wird?


----------



## André Uhres (19. Nov 2006)

http://www.java-forum.org/de/viewtopic.php?p=190236#190236


----------



## Prometheus (19. Nov 2006)

Danke das hat mir schon sehr geholfen.
Ich habe aber noch nen kleines Problem. In meinem Testprogramm hab ich in einem Bereich den Text rot gefärbt, aber wenn ich *genau* danach weiter schreibe ist der Text auch rot.


```
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JTextPane;
import javax.swing.text.*;
import java.awt.Color;


public class Test extends JFrame
{
	public Test ()
	{
		super ("Test");
		setSize (300,300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		JTextPane textpane = new JTextPane ();
		textpane.setText ("Hallo\nwie gehts");
				
		setLayout (new BorderLayout());
		add (textpane);
		
		StyledDocument doc = textpane.getStyledDocument ();
		Style style = textpane.addStyle("Red", null);  
		StyleConstants.setForeground(style, Color.red);

      doc.setCharacterAttributes(0, 5, textpane.getStyle("Red"), true); 
		
		setVisible (true);
	}
	public static void main (String args[])
	{
		new Test ();
	}
}
```

Was hab ich falsch gemacht?


----------



## André Uhres (19. Nov 2006)

Prometheus hat gesagt.:
			
		

> ..In meinem Testprogramm hab ich in einem Bereich den Text rot gefärbt,
> aber wenn ich *genau* danach weiter schreibe ist der Text auch rot..


Findest du das denn nicht normal? Macht das nicht jeder Texteditor?


----------



## Prometheus (19. Nov 2006)

Oh stimmt ja. Hab ich garnicht drann gedacht


----------



## GAST (15. Feb 2007)

Hallo

Wie kann ich denn dieses weiter einfärben/formatieren, was auch immer, beenden?
ich hab schon probiert ein neues Style einzufügen aber das hats auch nicht gebracht.

hier setzte ich den Style

```
public void setStyled(VarPanel var, String styleName)
	{
		for(int count = 0; count< this.startIndizes.length; count++)
				var.getDoc().setCharacterAttributes(startIndizes[count], 5, var.getTxtPane().getStyle(styleName), true);
			
	}
```

ich möchte Uhrzeiten deren Start Index ich vorher ermittelt habe einfärben, danach soll man allerdings normal weiter schreiben können auch wenn direkt danach weiter geschrieben wird also ohne Freizeichen.

MfG
Patrick


----------

