JTextPane Schriftgröße in Pixel

@ benhaze

ohhhh du bist mein Held. jetzt bekomm ich schonmal den Style als String raus.
Dafür erstmal meine Hochachtung *verbeug*

Jetzt nur noch eines. Wie mach ich aus dem String wieder ein StyleSheet
Es soll ja in einer externen Datei geschrieben werden, um es später wieder zu öffnen.


@ Deathman123456
Das hab ich auch schon versucht. Aber das textpane scheint es einfach in font um zuwandeln. Probier mal werte wie 4000 aus oder so. Dann siehst was ich mein ^^v
 
Zuletzt bearbeitet:
oder ganz einfach, bau dir dein eigenes TextPane:

Java:
public class TextPaneEx extends JTextPane
{
   private String m_text;
        
   @Override
   public void setText(String p_text)
   {
      super.setText(p_text);
      m_text = p_text;
   }

   public String getRAWText()
   {
      return m_text;
   }
}

dann kannst du dir dein mit setText() gesetzten Text wieder mit getRAWText() holen...
 
Wenn ich dich richtig verstehe, willst Du in einen editor Text schreiben, diesen dann formatieren und anschließend speichern!

Wenn Du ein JEditorPane verwendest, den contentTyp("text/HTML") angibst
dann das ganze einen JFileChooser zum Speichern und öffnen deiner Dateien übergibst

z.B.
Java:
private void saveAs() {
		fileBrowser.saveFile(editorPane.getText(), "./");
	}

dann sollte Dein problem gelöst sein. Wichtig ist nur noch die Endung ".html"
sonst geht deine Formatierung verloren.

Java:
public File saveFile(String text, String startDir) {
		fileChooser = new JFileChooser(new File(startDir));
		fileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
		fileChooser.setApproveButtonText("Speichern");
		if (returnVal == JFileChooser.APPROVE_OPTION) {
			file = fileChooser.getSelectedFile();
			saveFile(file, text);
			return file;
		} else if (returnVal == JFileChooser.CANCEL_OPTION) {
			System.out.println("Speichern abgebrochen");
		}
		return null;
	}
 
Zuletzt bearbeitet von einem Moderator:
also,

Java:
editorPane.getText()

liefert den HTML-Code *ohne* Stylesheet-Informationen.

wieso sollte das hierbei anders sein?

Java:
fileBrowser.saveFile(editorPane.getText(), "./");
 
Heureka

Habs geschaft.

Hier so hab ichs gemacht:

Java:
int start = textpane.getSelectionStart();
int end = textpane.getSelectionEnd();
					
StyledDocument doc = textpane.getStyledDocument();
					
try
{
						
	int temp = new Integer(in);
						
	SimpleAttributeSet sattr = new SimpleAttributeSet();
	sattr.addAttribute(StyleConstants.Size, temp + "px");
	doc.setCharacterAttributes(start, end-start, sattr, false);
							
						
						
						
}
catch(NumberFormatException e)
{
	//Der Fehler

}
						
}


Wenn man den wert in==64 übergiebt und sich den Text mit getText() hohlt, hat man einen Schönes:

HTML:
<html>
  <head>

  </head>
  <body>
    <p style="margin-top: 0">
      <font size="64px">Hallo Welt</font>
    </p>
  </body>
</html>

Und er Zeigt es nun Wirklich pixelgenau an und mann kann den Code wegsichern :):):):):)

Thx noch mal @ all für die Hilfe ^^v
 
Ach verdammt ich nehm alles zurück.

Also ich bekome den Html code schön raus. nur wen ich ihn wieder mit setText() zuweisse vergisst er die schriftgröße. Alle anderen Formatierungen behält er nur die Schriftgröße nicht. Ist doch zum heulen:(:(:(:(:(

hat vieleicht irgendwer noch ne idea? Ich bin am Verzweifeln
 
Schon garnicht schlecht, aber Wenn ich zum beispiel den satz hier habe

Die Wellt geht unter

Und nun mach ich die Welt auf größe 60:

Die Welt geht unter

ist der html code ja so:
HTML:
<font style='font-size:60px;'>Die Welt</font> geht unter

Und jetzt hab ich mich aber vertahn und will doch nur von "Welt" bis "unter" auf größe 70 setzen.
Dan kommt föllig falscher code raus:

HTML:
<font style='font-size:60px;'>Die <font style='font-size:70px;'>Welt</font> geht unter</font>

damit würde er dann quasi alles ausser welt auf 60px setzen.
Dabei sollte aber alles bis auf "Die" 70px sein.

Verstehst wie ich mein? :):):)
 
So jetzt hab ichs aber geschafft. Is zwar ein ziemlicher Workaround aber es klappt.

Das verzwickte daran ist, wenn mann einem JTextpane das hier:

Java:
 textpane.setText("<font size='400px'>Hallo Welt</font>");

giebt, erkennt es die 400px nicht an. Wenn mann allerdings das hier übergiebt:

Java:
textpane.setText("<font style='font-size:400px;'>Hallo Welt</font>");

zeichnet er die Schrifft so wie er soll in 400px. Aber er wandelt denn Code intern in

HTML:
<font size='400px'>Hallo Welt</font>

um. (Was schon sehr komisch ist :confused::confused::confused:)((wenn mann sich den Text mit getText() hollt))

Jetzt kann mann eine Funktion schreiben die denn gesammten HTML Code durchgeht und die

HTML:
<font size='400px'>Hallo Welt</font>

durch

HTML:
<font style='font-size:400px;'>Hallo Welt</font>

ersetzt.

Ist zwar ne müssige Arbeit und mann muss jedes mal wenn mann wieder setText() macht den HTML code erst validieren aber es funktioniert wenigstens.

Und da haben wir den Beweiß: Mensch Herrscht über Maschiene und nicht andersherum ;-);-);-)


Ich lass denn Beitrag noch offen für denn Fall das jemand irgend eine Besser idee hat. Ich wäre sehr dankbar^^v
 

Neue Beiträge

Zurück