Introducir reglas en un stylesheet

A ver si me puedes ayudar que estoy un poco perdido.
Estoy haciendo un visor de ficheros html y quiero que me muestre los ficheros según unas reglas (o como se
Llame) que están en un fichero .css. Aquí te muestro una parte del código que tengo:
//creo el JTextPane donde se visualiza el texto
JTextPane jaec = new JTextPane();
jaec.setContentType("text/html");
//Le introduzco las reglas para que me lo muestre de una determinada forma
HTMLEditorKit htmlek=new HTMLEditorKit();
StyleSheet ss=new StyleSheet();
ss.addRule("body { background-color: #0000FF ; }");
ss.addRule("body { color: red}");
ss.addRule("#ln {color: #BBBBBB ;}"); //esta no funciona
htmlek.setStyleSheet(ss);
jaec.setEditorKit(htmlek);
jaec.setEditable(false);
El problema viene que las reglas que no empiezan con '#' me las reconoce y lo muestra bien, pero las que
Empiezan con '#' no las llega a reconocer o por lo menos no me lo muestra como quiero. ¿Sabes como puedo
¿Solucionar esto? ¿Esas reglas se introducen de otra forma?
GRACIAS por adelantado y perdona por el tiempo que te haga perder.

1 Respuesta

Respuesta
1
No para nada me haces perder el tiempo sinceramente me parece que el problema tiene que ver con el código que utilizas para validar deberías hacer tal vez lo siguiente aunque sea un poco más trabajaso
1 contar todas tus oincidencias con el #
2 crear un arreglo con todas las posiciones
3y de hay trabajar las presentación es decir el formato que por lo que veo lo manejas bien
Hola, gracias por tu contestación, pero he probado lo que me has dicho y tampoco ha funcionado. Lo que he intentado ahora es leer directamente del css y cargar todas sus reglas; aquí te mando el código (perdona por la largura):
import java.awt.*;
import javax.swing.*;
import java.io.*;
import javax.swing.text.*;
import javax.swing.text.html.HTMLEditorKit;
import java.util.*;
import javax.swing.text.html.StyleSheet;
public class Prueba{
//coloca el html en el JEditorPane
private static void readFile(JEditorPane text, final String filename) {
EditorKit kit = text.getEditorKit();
Document document = text.getDocument();
try{
document.remove(0,document.getLength());
kit.read(new FileReader(filename), document, 0);
}
catch(Exception ex) {
ex.printStackTrace();
}
}
//coloca las reglas
private static void setStyleSheet(JEditorPane editorPane_){
HTMLEditorKit editorKit = (HTMLEditorKit)editorPane_.getEditorKit();
StyleSheet styleSheet = editorKit.getStyleSheet();
try{
styleSheet.loadRules(
new BufferedReader(
new FileReader("stylesheet.css")),null);
} catch (IOException e) {
System.out.println("EXCEPCION" + e);
}
}
private static void createAndShowGUI(String html) {
JFrame frame = new JFrame("Prueba");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JEditorPane editorPane_ =
new JEditorPane();
HTMLEditorKit htmlek=
new HTMLEditorKit();
StyleSheet ss=new StyleSheet();
htmlek.setStyleSheet(ss);
editorPane_.setEditorKit(htmlek);
setStyleSheet(editorPane_);
//esto es para ver que reglas tiene
Enumeration rules = ss.getStyleNames();
while (rules.hasMoreElements()) {
String name = (String)rules.nextElement();
Style rule = ss.getStyle(name);
System.out.println(rule.toString());
}
editorPane_.setEditable(false);
editorPane_.setPreferredSize(new Dimension(1000, 500));
readFile(editorPane_, html);
frame.getContentPane().add(editorPane_);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI("fichero.html");
}
});
}
}
Ejecutando esto me sigue mostrando el fichero html como si no cargara las reglas del .css (como si fuera un fichero txt normal) sin embargo al imprimir las reglas (mediante la Enumeration) si que se ve que los carga.
Se que esta difícil el problema, pero es que es bastante importante para mi. ¿Sabes dónde puede estar el fallo?
Para su ejecución hay que tener el fichero html y el css en donde esta el class que ejecutas.
Espero que me puedas ayudar, pidiéndote disculpas por el tiempo que te quite.
Dejame ver si te puedo dar la mano pero lo estoy viendo algo difícil tengo que probar tu código para ver que sucede pero veamos que pasa
Por fin se que fallaba, el JEditorPane no soporta HTML 4.0 y para que me permita visualizarlo con colores tengo que modificar el html y el stylesheet.
De todas formas muchas gracias por el interés que has puesto, y espero que resuelvas los problemas de la U.
Brother disculpame pero me voy a demorar un poco con lo tuyo estoy con unos problemitas de la U que no me han permitido revisar tu código

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas