ich bin aktuell auf der Suche nach einer Lösung um den Text (html-Format) in einem Textpane zu setzen. Wenn ich einen Text setze wie zum Beispiel
„Hallo“
setzt das Textpane alles korrekt ausser die Textgröße. Die Textgröße wird wird immer mit 36 ausgegeben, unabhängig davon welche größe im HTML-text übergeben wird. Ich habe es schon mit einfachen setzen von textpane.setText(text) versucht oder über das StyledDocument. Das Ergebnis ist immer gleich. Hier mein aktueller Code zum Setzen des Textes. Mich verwirrt sehr das alles korrekt gesetzt wird, nur die Schriftgröße ist falsch.
String text = "<html><font size=7 face=\"Arial Black\" color=\"#f55fff\"><b>Hallo</b></font></html>";
Bewirkt das etwas?
Edit:
Ich bearbeite mal hier in der Hoffnung, dass der Beitrag nicht von einem Mod dann nochmal geprüft werden muss.
Meine Idee bei der Erstellung des Beitrags war eine andere.
If doc is an instance of HTMLDocument, this will read HTML 3.2 text.
Wenn man jetzt in die HTML 3.2 Referenz guckt, gehen also für size nur die Werte 1-7:
size
This sets the font size for the contents of the font element. You can set size to an integer ranging from 1 to 7 for an absolute font size, or specify a relative font size with a signed integer value, e.g. size=„+1“ or size=„-2“. This is mapped to an absolute font size by adding the current base font size as set by the BASEFONT element (see below).
<!ELEMENT FONT - - (%text)* -- local change to font -->
<!ATTLIST FONT
size CDATA #IMPLIED -- [+]nn e.g. size="+1", size=4 --
color CDATA #IMPLIED -- #RRGGBB in hex, e.g. red: color="#FF0000" --
>
<!ELEMENT FONT - - (%text)* -- local change to font -->
<!ATTLIST FONT
size CDATA #IMPLIED -- [+]nn e.g. size="+1", size=4 --
color CDATA #IMPLIED -- #RRGGBB in hex, e.g. red: color="#FF0000" --
>
vielen dank für eure Antworten.
Also ich habe nun getestet und es scheint wirklich am HTML 3.2 zu liegen. Wen ich die Schriftgröße von 1-7 ändere, ändert sich die Schriftgröße entsprechend.
7 = 36
6 = 24
…
2 = 10
1 = 8
Das heißt die Ursache ist gefunden “Top”.
Da ich meinen HTML Text jedoch mit absoluten Größen und Zeile für Zeile bekomme, muss ich im Programm die Größe absolut setzen können. Dafür habe ich auf die schnelle noch keine Lösung gefunden, ich google aber mal weiter.
Wenn ihr dafür eine Lösung habt, bin ich natürlich dankbar.
eigenen Text kann man damit vielleicht zusammenklicken, fertiges HTML von außen hieße wohl aufwendig zu parsen,
macht letztlich jeder Browser nicht anders, aber wohl nicht als Aufgabe erhofft
fertige Frameworks? SHEF - Swing HTML Editor Framework
gerade gesehen, ziemlich groß falls sonst schon zufrieden bis auf fehlende Font-Size-Unterstützung…,
aber womöglich ja auch noch viel mehr Lücken im einfachen Swing-HTML
vielen Dank für die Tips. Nach nun lange hin und her testen, habe ich mich entschieden das Format von HTML auf RTF zu ändern.
Vorteil: Man kann jede Schrift und jede Schriftgröße sowie Farbe setzen und abspeichern.
Wird der Text neu geladen, kann dieser direkt mit folgendem Code gesetzt werden.
String text = "Hallo";
textPane.setText(text);
Im JTextpane muss dazu nur der Content wie folgt gesetzt werden.
textPane.setContentType("text/rtf");
Jetzt funktioniert es wunderbar.
Vielen Dank nochmal, eure Antworten haben mich auf den richtigen Weg gebracht.
Und brachte die Erkenntnis „HTML ist nicht wirklich zu gebrauchen“