views:

226

answers:

4

I have a swing application that sends commands to server and receives result in XML format. I need to transform this into HTML via XSLT and then display result HTML on the panel. The problem is that the only Swing component which is able to display HTML - JEditorPane - takes either URL or javax.swing.text.StyledDocument as a source. Option with URL doesn't work for me because I have to save my html as a file on the file system first and I'd like to avoid this.

So I have a gap between in-memory result of XSL transformation and javax.swing.text.StyledDocument, which can be rendered by JEditorPane or JTextPane.

How to transform one to another? Or are there any other Swing solutions to display HTML from some in-memory source(DOM or String or whatever)?

Thank you in advance for help.

+1  A: 

see this : How to Use HTML in Swing Components
and Swing HTML Preview

SjB
Note: the linked page refers to the built-in HTML support in components like JLabel. This support is very basic and misses even more things than JEditorPane does... and it's not great.
PSpeed
I've already thought about that. I need as full as possible support for HTML
Maksym Govorischev
+3  A: 

Is there a reason that JEditorPane.setText() does not work for you?

I use JEditorPane all the time and I've never pulled the displayed data from a file or URL. So it is possible. Just need to figure out why it's not working for you.

To be specific:

editor.setContentType( "text/html" );    
editor.setText( "<html><body>Hello, world</body></html>" );
PSpeed
Thanks a lot. I've just missed this option. Probably, while looking through the methods list I subconciously decided that it can deal only with plain text and haven't examined javadoc in detail. Thanks again
Maksym Govorischev
These classes are overly complicated I think. JEditorPane is pretty poor beyond a certain point. Unfortunately, the free options for HTML rendering tend to be LGPL. In case that restriction is ever less important than the rendering quality there is Lobo Browser's Cobra component: http://lobobrowser.org/cobra.jsp And by far the best, the DJ Native Project: http://djproject.sourceforge.net/ns/ It bridges Swing and SWT to access the operating system's native browser component.
PSpeed
Yes, I saw them, but again, LGPL doesn't work for me
Maksym Govorischev
+2  A: 

What about JeditorPane.setText() ?

EJB
+1  A: 

Try Flying Saucer, it renders pretty well HTML.

adrian.tarau
LGPL license doesn't work for me, but still thanks. Will consider this in future
Maksym Govorischev
LGPL is commercial friendly, why it isn't good?
adrian.tarau