Ich möchte gerne mit Java und Swing einen formatierten Text ausgeben.
Mir schien die Benutzung von HTML am sinnvollsten.
Mein Programm zeigt den Text an, aber man kann nicht scrollen.
Außerdem gibt es keinen automatischen Zeilenumbruch. Wie kann ich
diesen aktivieren.
Damit ich nicht mein ganzes Programm mitschiken muß, habe ich ein
Miniprogramm geschrieben, um den Fehler zu rekostruieren.
Könntet ihr mal einen Blick darauf werfen und mir sagen, was falsch
ist.
Vielen Dank im Voraus,
Thomas
QUELLTEXT:
import javax.swing.\*;
import javax.swing.text.html.HTMLEditorKit;
public class HtmlV extends JPanel {
private static final long serialVersionUID = -5049101295205508494L;
public HtmlV() {
JEditorPane editPane = new JEditorPane();
editPane.setEditable(false);
HTMLEditorKit htmlkit = new HTMLEditorKit();
editPane.setEditorKit(htmlkit);
editPane.setAutoscrolls(true);
editPane.setText( //TODO: Scroll able machen
" Spielregeln "+
"" +
"
" +
"- Es wird auf einem Brett mit 8x8 Feldern gespielt.
" +
"- Als Startaufstellung werden vor dem Spielbeginn zwei weiße
und zwei schwarze Steine auf die mittleren Felder " +
"des Bretts gelegt, je zwei diagonal gegenüberliegende mit der
gleichen Farbe.
" +
"- Schwarz (Spieler 1) führt den ersten Zug aus.
" +
"- Die Spieler ziehen abwechselnd. " +
„Man setzt entweder einen Stein mit der eigenen Farbe nach oben
auf ein leeres Feld, oder man passt.“ +
"Passen ist aber nur erlaubt, wenn man keine legale Möglichkeit
hat, einen Stein zu setzen.
" +
"- Man darf nur so setzen, dass ausgehend von dem gesetzten
Stein in beliebiger Richtung " +
"(senkrecht, waagerecht oder diagonal) ein oder mehrere
gegnerische Steine anschließen und " +
"danach wieder ein eigener Stein liegt. Es muss also mindestens
ein gegnerischer Stein von dem gesetzten Stein " +
„und einem anderen eigenen Stein in gerader Linie eingeschlossen
werden.“ +
"Dabei müssen alle Felder zwischen den beiden eigenen Steinen von
gegnerischen Steinen besetzt sein.
" +
„- Alle gegnerischen Steine, die so eingeschlossen werden,
wechseln die Farbe,“ +
„indem sie umgedreht werden. Dies geschieht als Teil desselben
Zuges, bevor der Gegner zum Zug kommt.“ +
„Ein Zug kann mehrere Reihen gegnerischer Steine gleichzeitig
einschließen, die dann alle umgedreht werden“ +
" Wenn aber ein gerade umgedrehter Stein weitere gegnerische
Steine einschließt, werden diese nicht umgedreht.
" +
"- Betrifft nur die Variante Reversi: wenn der Spieler
A, der am Zug ist, seinen Steinvorrat aufgebraucht hat, aber noch
Steine einschließen kann, der Gegner B aber in seinem nächsten Zug
keine Steine einschließen kann, falls A passt, aber noch Steine in
seinem Vorrat hat, dann erhält A für seinen Zug einen Stein von
B.
" +
"- Wenn die Spieler unmittelbar nacheinander passen, wenn also
keiner mehr einen Stein setzen kann, ist das Spiel beendet.
" +
"- Der Spieler, der am Ende die meisten Steine seiner Farbe auf
dem Brett hat, gewinnt. Haben beide die gleiche Zahl, ist das Spiel
unentschieden.
" +
"- Um die Höhe des Gewinns zu ermitteln, gibt es verschiedene
Regelungen. Meist werden die Felder, die bei Spielende noch leer
sind, dem Gewinner gutgeschrieben, also zu der Differenz der
Steine-Anzahl addiert.
" +
"- Mit einer Zusatzregel, die oft in Japanischen Turnieren
angewandt wird, kann man ein Unentschieden vermeiden: ein Spieler
(der z. B. ausgelost wird) legt fest, ob eine gleiche
Steine-Anzahl am Partieende als Sieg für Weiß oder für Schwarz
gewertet wird. Der andere Spieler wählt dann eine Farbe.
" +
„“+
„“
);
add(new JScrollPane(editPane));
}
public static void main(String[] args) {
JFrame jf = new JFrame(„HTML“);
jf.add(new HtmlV());
jf.setSize(600,400);
jf.setVisible(true);
}
}