2010-10-14 3 views
4

J'essaie d'afficher HTML dans mon application Java qui a une feuille de style liée inclus dans mon HTML.Rendu HTML avec CSS en Java

Je transforme mon XML en HTML en utilisant XSLT de Java. Je veux inclure une feuille de style afin que je puisse facilement styliser la sortie html. Cependant, la feuille de style est ignorée et le code HTML est généré normalement.

Pour ce faire, j'utilise un JEditorPane et un HTMLEditorKit. J'ai trouvé un exemple de code sur Dev Daily pour ce faire.

Ma feuille de style est assis sur mon disque dur local et je me demandais si quelqu'un savait comment je pourrais l'utiliser?

je le code suivant:

JEditorPane jEditorPane = new JEditorPane(); 
jEditorPane.setEditable(false); 

HTMLEditorKit kit = new HTMLEditorKit(); 
jEditorPane.setEditorKit(kit); 

try {  
    kit.getStyleSheet().importStyleSheet(new URL("file://D:\\mycssfile.css")); 
} catch(MalformedURLException ex) { 
} 

Document doc = kit.createDefaultDocument(); 
jEditorPane.setDocument(doc); 
jEditorPane.setText(html); 

Dans ma sortie html de xsl le css est lié en utilisant les éléments suivants - j'obtenir le même résultat avec elle inclus ou exclu:

<link rel="stylesheet" type="text/css" href="mycss.css" /> 

Tous des idées?

Cheers,

Andez

+0

Je pense que HTMLEditorKit a assez mauvaise prise en charge de CSS, cela pourrait être le problème – andrewmu

Répondre

5

Votre URL est incorrecte, donc il ne peut pas trouver votre fichier CSS. Changer à:

kit.getStyleSheet().importStyleSheet(new URL("file:///D:/mycssfile.css")); 

Ou mieux encore, au lieu d'utiliser une URL, ajoutez le fichier css à votre classpath, puis le charger comme une ressource, comme ceci:

kit.getStyleSheet().importStyleSheet(MyClassName.class.getResource("mycssfile.css")); 
+0

Je suis allé pour le kit.getStyleSheet(). importStyleSheet (nouvelle URL ("fichier: /// D: /mycssfile.css")); option. Notre configuration est stockée relativement sous le chemin de l'application Java, il suffit donc de comprendre cette partie. – Andez

+0

Ça fonctionne maintenant. – Andez