2009-11-24 12 views
10

Ho un'applicazione swing che invia comandi al server e riceve risultati in formato XML. Ho bisogno di trasformare questo in HTML tramite XSLT e quindi visualizzare il risultato HTML sul pannello. Il problema è che l'unico componente di Swing che è in grado di visualizzare HTML - JEditorPane - accetta come sorgente un URL o javax.swing.text.StyledDocument. L'opzione con URL non funziona per me, perché prima devo salvare il mio html come file sul file system e vorrei evitarlo.Rendering html nell'applicazione Swing

Quindi ho uno spazio vuoto tra il risultato in memoria della trasformazione XSL e javax.swing.text.StyledDocument, che può essere visualizzato da JEditorPane o JTextPane.

Come trasformare uno in un altro? O ci sono altre soluzioni Swing per visualizzare l'HTML da qualche sorgente in-memory (DOM o String o altro)?

Grazie in anticipo per l'aiuto.

risposta

14

C'è un motivo per cui JEditorPane.setText() non funziona per te?

Uso sempre JEditorPane e non ho mai estratto i dati visualizzati da un file o da un URL. Quindi è possibile. Ho solo bisogno di capire perché non funziona per te.

Per essere precisi:

editor.setContentType("text/html");  
editor.setText("<html><body>Hello, world</body></html>"); 
+0

Grazie mille. Ho appena perso questa opzione. Probabilmente, mentre osservavo la lista dei metodi, decisi subconcio di poter trattare solo con testo semplice e non ho esaminato javadoc in dettaglio. Grazie ancora –

+0

Queste lezioni sono eccessivamente complicate, penso. JEditorPane è piuttosto povero oltre un certo punto. Sfortunatamente, le opzioni gratuite per il rendering HTML tendono ad essere LGPL. Nel caso in cui tale restrizione sia sempre meno importante della qualità di rendering, c'è il componente Cobra di Lobo Browser: http://lobobrowser.org/cobra.jsp e di gran lunga il migliore, il DJ Native Project: http://djproject.sourceforge.net/ns/Collega Swing e SWT per accedere al componente browser nativo del sistema operativo. – PSpeed

+0

Sì, li ho visti, ma ancora una volta, LGPL non funziona per me –

2

Che dire JeditorPane.setText()?