Foros del Web » Programación para mayores de 30 ;) » Java »

Modificar HTML en JTextPane

Estas en el tema de Modificar HTML en JTextPane en el foro de Java en Foros del Web. Hola: Tengo un JTextPane con la propiedad "contentType" a "text/html", ya que necesito mostrar el contenido del panel con distintos colores y formatos. Quiero modificar ...
  #1 (permalink)  
Antiguo 12/03/2007, 06:46
 
Fecha de Ingreso: diciembre-2006
Mensajes: 16
Antigüedad: 17 años, 5 meses
Puntos: 0
Modificar HTML en JTextPane

Hola:

Tengo un JTextPane con la propiedad "contentType" a "text/html", ya que necesito mostrar el contenido del panel con distintos colores y formatos. Quiero modificar dicho contenido cuando, por ejemplo, se pulse un botón (concretamente, si tengo <html> hola </html>, quiero que, por ejemplo, al pulsar un botón me cambie a <html> hola caracola </html>).
Quería saber cómo puedo hacer esto de una forma no chapuza, ya que lo que hago ahora es quitar los últimos 7 caracteres (el </html>) y añadir lo nuevo junto con el </html>. He estado viendo la clase HTMLEditorKit, pero no se si sirve para lo que quiero, ni tengo muy claro cómo utilizarla.

Muchas gracias,

Carlos
  #2 (permalink)  
Antiguo 20/10/2007, 22:27
 
Fecha de Ingreso: octubre-2007
Mensajes: 1
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Modificar HTML en JTextPane

con esta funcion podras reemplazar todo lo que quieras hasta puedes meter formato html, y podras modificar una palabra clave espero que te sirva:

public String sustituir(String cadena, String quitar, String poner)
{
String resultado = cadena;
if (cadena == null || quitar == null || poner == null) return resultado;
if (!cadena.equals("") && !quitar.equals(""))
{
int posicion = cadena.indexOf(quitar);
if (posicion!=-1)
{
int tamanio = quitar.length();
String resto = cadena.substring(posicion+tamanio);
resultado = cadena.substring(0,posicion) + poner + sustituir(resto,quitar,poner);
}
}
return resultado;
}

Como te puedes dar cuenta recibe tres parametros bien especificados, si no cualquier onda comentas por aqui!!
  #3 (permalink)  
Antiguo 18/10/2009, 04:17
 
Fecha de Ingreso: octubre-2009
Mensajes: 1
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Modificar HTML en JTextPane

La solucion elegante es esta:

Código:
public class loquesea {
  private JEditorPane htmlEditorPane;
  private Element parrafo = null;
  (...)
  public void imprimirHtml(String str) {
        try {
            HTMLDocument docHtml = (HTMLDocument)htmlEditorPane.getDocument();
            if(parrafo == null) {
                parrafo = docHtml.getRootElements()[0].getElement(0).getElement(0);
            }
            docHtml.insertBeforeEnd(parrafo, str);
            
        } catch (IOException ex) {
           ex.printStackTrace();
        } catch (BadLocationException ex) {
            ex.printStackTrace();
        }
    }
De esta manera el elemento "parrafo" correspondera con la seccion <p>(cosas)</p> de tu texto. Usando docHtml.insertBeforeEnd(parrafo, str) lo insertaras justo antes de acabar ese parrafo

Si quisieras insertar justo antes de acabar la etiqueta body, seria algo asi:
Código:
parrafo = docHtml.getRootElements()[0].getElement(0);
Y si quisieras insertar justo antes de acabar la etiqueta html:
Código:
parrafo = docHtml.getRootElements()[0];
Estoy escribiendo codigo pegado de una fuente con codigo inventado (como al declaracion de campos), por lo que posiblemente de algun error de sintaxis, pero solucionandolos funcionara
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:00.