Sziasztok!
Van egy kis miniatűr progim, ami HTML-ben formázott szövegeket (sorokba rendezve) ír ki egy JEditorPane objektumba. (A progit lásd lent!) A problémám az, hogy az első és második sor között mindig kihagy plusz egy sort a szerkesztő. A többi sor esetén már jól viselkedik. Így kénytelen voltam kiegészíteni a programot egy extra törlési funkcióval, ami figyeli, hogy hányadik sort írom éppen, és ha a második következne, kitörlöm a felesleges extra üres sort.
Kérdéseim:
- Mitől lehet ez a jelenség?
- Hogyan lehet kiküszöbölni hivatalosan?
- Lehet, hogy operációs rendszer függő a dolog? (UBUNTU 8.04)
import java.awt.*;
import javax.swing.*;
public class HtmlFormating extends JFrame {
String[] adat = new String[] {"Jóska", "Helló!", "Jancsi", "Szia!"};
String uj_uzenet1 = "<b>" + adat[0] + "</b> üzenete: <font size=\"4\" face=\"Tahoma\" color=\"black\">" + adat[1] + "</font><br>";
String uj_uzenet2 = "<b>" + adat[2] + "</b> üzenete: <font size=\"2\" face=\"Tahoma\" color=\"red\">" + adat[3] + "</font><br>";
String uj_uzenet3 = "<b>" + adat[0] + "</b> üzenete: <font size=\"2\" face=\"Tahoma\" color=\"black\">" + adat[3] + "</font><br>";
String uj_uzenet4 = "<b>" + adat[2] + "</b> üzenete: <font size=\"2\" face=\"Tahoma\" color=\"black\">" + adat[1] + "</font><br>";
JEditorPane ep1 = new JEditorPane();
JEditorPane ep2 = new JEditorPane();
JScrollPane scrp;
int line = 0;
public HtmlFormating() {
super("Html Formating Example");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(50, 50, 500, 500);
getContentPane().add(scrp = new JScrollPane(ep1));
ep1.setContentType("text/html");
ep2.setContentType("text/html");
writeText();
setVisible(true);
} // end of HtmlFormating()
private int getLast(JEditorPane ep) {
return ep.getDocument().getLength();
}
public void writeHtmlString(String s) {
int i = getLast(ep1);
ep2.setText(s);
ep2.select(0, getLast(ep2));
ep2.copy();
ep1.paste();
line = line + 1;
// Ezt a törlési funkciót muszáj voltam beilleszteni
if (line == 2 && i > 0) {
ep1.select(i-1, i);
ep1.cut();
}
// Itt a vége a törlésnek
i = getLast(ep1);
ep1.select(i, i);
}
public void writeText() {
writeHtmlString(uj_uzenet1);
writeHtmlString(uj_uzenet2);
writeHtmlString(uj_uzenet3);
writeHtmlString(uj_uzenet4);
writeHtmlString(uj_uzenet1);
writeHtmlString(uj_uzenet2);
writeHtmlString(uj_uzenet3);
writeHtmlString(uj_uzenet4);
} // end of writeText()
public static void main(String[] args) {
HtmlFormating st = new HtmlFormating();
}
} // end of class