# Textausgabe in neuem Fenster



## new@java (13. Okt 2010)

Hallo,

ich bin gerade dabei, ein kleines Spiel zu programmieren und möchte, dass sich bei Klick auf einen bestimmten Button ein neues Fenster öffnet, in dem formatierter Text steht. Seit Tagen halte ich mich an dieser Sache, die eigentlich eine Kleinigkeit ist, auf. Und das Internet hilft mir auch nicht weiter, finde einfach nicht den passenden Hinweis und weiß auch schon nicht mehr, wonach ich suchen soll. Also, ich hoffe, hier kann mir jemand weiterhelfen. Hier mein Quellcode für das Fenster, in dem der Text stehen soll: 


```
import javax.swing.*;
import java.awt.*;
import java.text.*;

public class Spielregeln extends JFrame
{
	 public Spielregeln() 
	  {
	    super();
	    setSize( 800,200 );
	    setTitle ("Spielregeln");
	    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);   
	    setVisible( true );
	    getContentPane().setLayout(new FlowLayout());
	    JLabel label = new JLabel("Textausgabe");
	    label.setFont(new Font("Serif", Font.PLAIN, 36));
	    getContentPane().add(label);
	    setSize(800, 500);
	    setLocationRelativeTo(null);  
	    setVisible(true);

	  }
	    	 
	  public static void main( String[] args)
	  {
	    new Spielregeln();
	  }

	}
```

Das Öffnen des Fensters funktioniert einwandfrei. Es steht halt bisher nur "Textausgabe" in dem Fenster, wo wie ich es oben ja auch festgelegt habe. Aber wie bekomme ich es hin, dass ein längerer, formatierter Text (Spielregeln) angezeigt wird?

Vielen Dank im Voraus für eure Hilfe!


----------



## eRaaaa (13. Okt 2010)

new@java hat gesagt.:


> Aber wie bekomme ich es hin, dass ein längerer, formatierter Text (Spielregeln) angezeigt wird?



Mit einer JTextPane und einem entsprechendem StyledDocument. Hier findest du viele Beispiele und eine Erklärung, wenn es dann noch konkrete Probleme gibt, kannst du dich ja nochmal melden


----------



## new@java (13. Okt 2010)

Danke für die schnelle Antwort, eRaaaa! Die Seite ist auch wirklich nicht schlecht. Aber ich vermute, mir mangelt´s am Grundverständnis. An welcher Stelle genau muss der eigentliche Text denn im Quellcode stehen? Sehe auf der Seite nirgendwo den Text im Quellcode. Bei mir ist er ja quasi auf dem Label und wird ja auch angezeigt, aber ich kann ja schließlich nicht den ganzen Text in die Gänsefüßchen schreiben und dann formatieren, oder? Verstehst du ansatzweise, worauf ich hinaus will? ???:L Bin mir nicht sicher, ob ich mich klar genug ausdrücke


----------



## eRaaaa (13. Okt 2010)

new@java hat gesagt.:


> aber ich kann ja schließlich nicht den ganzen Text in die Gänsefüßchen schreiben und dann formatieren, oder?



Doch klar könntest du. Du musst halt ein JTextPane benutzen und diesem dann ein StyledDocument setzen. Auf der Seite ist ja eine Beispielklasse die du mal ausprobieren könntest.
Mir scheint als wenn du dir den Artikel nicht durchgelesen hättest. Am Ende wird nämlich ein Beispiel gezeigt wie das Document zum Einsatz kommt.
Über die Methode kannst du dann den Text formatieren, z.B. mit der Methode 
public void setBold(int start, int end, boolean active)  kannst du halt sagen von welcher Position bis zur welchen Position der Text dick formatiert werdne soll(ode eben wieder ausgeschaltet werden soll wenn active = false)


new@java hat gesagt.:


> Verstehst du ansatzweise, worauf ich hinaus will? ???:L Bin mir nicht sicher, ob ich mich klar genug ausdrücke


Ich verstehe schon(denke ich zumindest) nur ich wüsste halt nicht was man noch ergänzend zu dme Artikel sagen kann ohne konkrete Fragen ;D Nimm dir vllt mal ein paar Minuten mehr Zeit, lies den gesamten Artikel und führe das Beispiel aus. Dann bau es bei dir ein oder konkretisiere deine Fragen


----------



## Gastredner (13. Okt 2010)

Ich würde folgendermaßen vorgehen:

Schreibe deinen Hilfetext in HTML-Form in eine Datei, z. B. help.html.
Erstelle eine JEditorPane und setze sie Read-Only ([c]setEditable(false);[/c]).
Besorge dir über den Classloader eine URL, die zu deiner HTML-Datei führt: 
	
	
	
	





```
URL helpFile = getClass().getClassLoader().getResource("./help.html");
```
 (dieser Code ist ein Beispiel und funktioniert nur, wenn deine Hilfedatei direkt neben deinem fertigen Jar bzw. in deinem Eclipse-Projekt liegt).
Setze die URL als Input für deine JEditorPane (wie in diesem Beispiel gezeigt).
Übergebe deine JEditorPane einer JOptionPane lasse diese einen entsprechenden Dialog anzeigen:
	
	
	
	





```
JOptionPane.showMessageDialog(deinFrame, deineEditorPane, "Hilfe", JOptionPane.PLAIN_MESSAGE, null);
```

Die Kombination von JTextPane und StyledDocument ist vermutlich flexibler, aber für deine Zwecke sollte ein Dokument mit den Formatierungsmöglichkeiten von HTML 3.2 vermutlich vollkommen ausreichen. Außerdem ist es meiner Meinung nach einfacher als der Umgang mit dem StyledDocument.


----------

