Efectivamente, aunque no entiendo del todo cómo, aquí están las cuatro líneas de código necesarias para hacerse un navegador.
En primer lugar tenemos la clase HTMLEditorKit, que aunque no sé qué hace, por el nombre imagino que es la clase que tiene todo lo necesario para interpretar los ficheros HTML. La instanciamos.
HTMLEditorKit kit = new HTMLEditorKit( );
Luego, en un JEditorPane, que es el que admite estas cosas, le decimos que su tipo de texto va a a ser HTML y le pasamos el editor kit este
JEditorPane editor = new JEditorPane();
editor.setEditorKitForContentType("text/html", kit );
Con esto ya lo tenemos todo preparado, salvo un pequeño detalle. Si al editor no le decimos nada, es editable, se puede modificar la página web. No es eso lo que quiero, así que lo hago no editable.
editor.setEditable( false );
Finalmente, basta con decirle qué página queremos que muestre
editor.setPage ("file:/unapagina.html");
Ya está, con esto se ve la página html, con sus fotos, frames y demás en nuestro editor.
Lo único que los hiperenlaces todavía no funcionan al hacer click en ellos. Debemos hacer un poco de código más.
Lo primero es decirle al HTMLEditorKit que se suscriba a los eventos de ratón sobre la página html, que los traduzca y nos los pase. Eso se hace con una simple línea de código
kit.install( editor );
Y ahora, tenemos que suscrbirnos nosotros a los eventos de ratón sobre los hiperenlaces para cambiar nosotros la página. Es importante el install() anterior, porque si no el editor no avisará a sus HyperlinkListener. El código es este
editor.addHyperlinkListener( listener );
donde listener es una instancia de una clase como la siguiente
HyperlinkListener listener = new HyperlinkListener( )
{
public void hyperlinkUpdate( HyperlinkEvent e )
{
};{
try
{
catch( Exception e2 )
{
}{
// Se comprueba si se ha hecho click
if( e.getEventType( ) == HyperlinkEvent.EventType.ACTIVATED )
{
} if( e.getEventType( ) == HyperlinkEvent.EventType.ACTIVATED )
{
// se obtiene la url a la que apunta el hiperlink
if( e.getURL( ) != null )
{
}if( e.getURL( ) != null )
{
// Se pasa la página al editor
editor.setPage( e.getURL( ) );
}editor.setPage( e.getURL( ) );
catch( Exception e2 )
{
e2.printStackTrace( );
}Aquí hay que tener un poco de cuidado. Al suscribirnos, se nos avisará cada vez que el ratón haga cualquier cosas sobre el hiperenlace, incluso aunque simplemente pase sobre él, sin hacer click. Por ello la necesidad del primer if, para ver si el hiperenlace se ha ACTIVED, es decir, si se ha hecho click sobre él. Luego, la URL sobre la que se ha hecho click se obtiene fácilmente del evento.
Ya están las cuatro líneas mágicas que necesitamos para tener un mini-navegador en java.
2 comentarios:
Chui sos un genio!! no sabes lo que me han ayudado tus posts, desde tu sitio anterior en yahoo he seguido tus mensajes y de verdad te agradezco de corazon que saques estos ratos para iluminarnos a los menos experimentados.
Saludos desde Costa Rica
gay
Publicar un comentario