Hallo hilfereiches Forum,
wir haben hier schon oft gelesen und gute Hilfe gefunden. Danke erstmal dafür.
Mein Kumpel und ich versuchen momentan folgendes Problem zu lösen.
Ich habe eine SwingGUI geschrieben. Die Eingabedaten werden als technische Zeichnung interpretiert. Dabei wird ein Graphics2D benutzt. Darüber wird ein Bild gezeichnet mit BufferedImage. Dann wird das ganze mit drawString beschrifted. In der gesamten restlichen Swingoberfläche werden die Variablen wie alpha, delta tiefer oder höher gestellten Indices einfach über die Documentart als html geparst und dadurch dargestellt.
Nun suchen wir nach einem Weg, das was in einem jEditorPane bzw mit dem HtmlEditorKit dargestellt wird irgendwie auf die Graphik zu übertragen.
Die allgemeine Frage ist, wie wir einen formatierten Text z.B. ein α<sub>A</sub> auf ein Bild bekommen. Das ganze am besten in html.
Hier mal ein Testprogramm, welches das Problem hoffentlich verdeutlicht.
Mit herzlichen Grüßen
Milbo
wir haben hier schon oft gelesen und gute Hilfe gefunden. Danke erstmal dafür.
Mein Kumpel und ich versuchen momentan folgendes Problem zu lösen.
Ich habe eine SwingGUI geschrieben. Die Eingabedaten werden als technische Zeichnung interpretiert. Dabei wird ein Graphics2D benutzt. Darüber wird ein Bild gezeichnet mit BufferedImage. Dann wird das ganze mit drawString beschrifted. In der gesamten restlichen Swingoberfläche werden die Variablen wie alpha, delta tiefer oder höher gestellten Indices einfach über die Documentart als html geparst und dadurch dargestellt.
Nun suchen wir nach einem Weg, das was in einem jEditorPane bzw mit dem HtmlEditorKit dargestellt wird irgendwie auf die Graphik zu übertragen.
Die allgemeine Frage ist, wie wir einen formatierten Text z.B. ein α<sub>A</sub> auf ein Bild bekommen. Das ganze am besten in html.
Hier mal ein Testprogramm, welches das Problem hoffentlich verdeutlicht.
Mit herzlichen Grüßen
Milbo
Code:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.StringReader;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.text.BadLocationException;
import javax.swing.text.html.HTMLEditorKit;
public class HtmlaufBild {
JFrame frame;
Graphics2D g2;
BufferedImage buff;
int width = 400;
int height = 200;
Color fg = Color.black; // vordergrund
Color bg = Color.white;
public static void main(String[] args) {
HtmlaufBild main = new HtmlaufBild();
}
private HtmlaufBild(){
frame = new JFrame();
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(100, 100);
frame.setVisible(true);
initGraphics();
JLabel neuezeichnung = new JLabel(draw());
frame.add(neuezeichnung);
}
private ImageIcon draw(){
g2.setPaint(fg);
g2.fill( new Rectangle2D.Double(25, 25, width-50, height-50));
g2.setPaint(Color.red);
String zuParsenderString = "A<sub>K</sub>";
String geparsterString = htmlParsen(zuParsenderString);
//Wird drawString die geparsten Zeichen interpretieren?
g2.drawString(geparsterString,50, 50);
return new ImageIcon(buff);
}
private void initGraphics(){
buff = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);
g2 = buff.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setFont(new Font("Arial", Font.PLAIN, 10));
g2.setBackground(bg);
g2.clearRect(0, 0, width, height);
}
public String htmlParsen(String zuParsenderText){
StringReader r = new StringReader(zuParsenderText);
HTMLEditorKit.Parser parse = new HTMLParse().getParser();
HTMLEditorKit.ParserCallback callback = new HTMLEditorKit.ParserCallback();
try {
parse.parse(r,callback,true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Wo landet das geflushte
try {
callback.flush();
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Hmm und wie kommen wir jetzt an das geparste im Callback ran?
String geparsterText = callback.toString();
return geparsterText;
}
/**
* Call to obtain a HTMLEditorKit.Parser object.
* Von Seite [url]http://www.samspublishing.com/articles/article.asp?p=31059&rl=1[/url]
* @return A new HTMLEditorKit.Parser object.
*/
public class HTMLParse extends HTMLEditorKit{
public HTMLEditorKit.Parser getParser(){
return super.getParser();
}
}
}