[código] Crear un navegador Web básico en Java
Siguiendo con el tema de redes en Java, veremos el uso de la clase JEditorPane, la cual podremos usar cuando el uso de JTextArea no sea suficiente, y necesitemos un area de texto en el que podamos incluir textos en distintos colores o hasta imágenes.
JEditorPane puede interpretar texto HTML, por lo que podremos mostrar contenidos de una página u otro recurso que utilice este estándar. Por tanto, veremos además como procesar eventos HyperlinkEvent para la manipulación de links.
El resultado…

El código…
// Uso de un objeto JEditorPane para mostrar el contenido de un archivo en un servidor Web.
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
public class LeerArchivoServidor extends JFrame {
private JTextField campoIntroducir;
private JEditorPane areaContenido;
// configurar GUI
public LeerArchivoServidor()
{
super( "Navegador Web simple" );
Container contenedor = getContentPane();
// crear campoIntroducir y registrar su componente de escucha
campoIntroducir = new JTextField( "Escriba aquí el URL del archivo" );
campoIntroducir.addActionListener(
new ActionListener() {
// obtener el documento especificado por el usuario
public void actionPerformed( ActionEvent evento )
{
obtenerLaPagina( evento.getActionCommand() );
}
} // fin de la clase interna
); // fin de la llamada a addActionListener
contenedor.add( campoIntroducir, BorderLayout.NORTH );
// crear areaContenido y registrar componente de escucha de evento HyperlinkEvent
areaContenido = new JEditorPane();
areaContenido.setEditable( false );
areaContenido.addHyperlinkListener(
new HyperlinkListener() {
// si el usuario hizo clic en el hipervínculo, ir a la página especificada
public void hyperlinkUpdate( HyperlinkEvent evento )
{
if ( evento.getEventType() ==
HyperlinkEvent.EventType.ACTIVATED )
obtenerLaPagina( evento.getURL().toString() );
}
} // fin de la clase interna
); // fin de la llamada a addHyperlinkListener
contenedor.add( new JScrollPane( areaContenido ),
BorderLayout.CENTER );
setSize( 400, 300 );
setVisible( true );
} // fin del constructor de LeerArchivoServidor
// cargar documento
private void obtenerLaPagina( String ubicacion )
{
// cargar documento y mostrar ubicación
try {
areaContenido.setPage( ubicacion );
campoIntroducir.setText( ubicacion );
}
catch ( IOException excepcionES ) {
JOptionPane.showMessageDialog( this,
"Error al recuperar el URL especificado", "URL incorrecto",
JOptionPane.ERROR_MESSAGE );
}
} // fin del método obtenerLaPagina
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
LeerArchivoServidor aplicacion = new LeerArchivoServidor();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase LeerArchivoServidor
Los ejercicios utilizados en este post están basados en ejemplos del libro Cómo programar en Java de Deitel, y por lo tanto están bajo la licencia que esta editorial disponga.
63 Comentarios | deja el tuyo





El que sepa lo que le comente al Casidiablo
please me avisa
mira yo tenia el mismo problema con este programa el problema es que no ejecuta algunos comandos de javascript necesitas una libreria para poder hacer lo que tu quieres escribe tu email y te envio las libreiras con un programa de ejemplo
Hola! javierdpp por aca esta mi correo para
que me envies las librerias y el ejemplito.
se te agradece mucho hermano por la ayuda.
jamil_pupiro@hotmail.com
ya te envie la informacion espero que sea lo que necesitas saludos
Lo primero de todo, gracias Casidiablo por compartir este código, estoy empezando con Java y me biene muy bien tener un ejemplo sencillo como este.
Por otra parte, javiedpp, sería muy útil que compartieras la información para implementar la librería que comentas. Si lo prefieres te paso mi correo. Pero seguramente mucha gente agradecería que lo postearas aquí.
Gracias a los dos.
no es cuestion de no querer compartir la informacion lo que pasa es como te doy las librerias y el programa de ejemplo por este medio la verdad no se como si me dices que puedo pegar el codigo aqui y las librerias tambien lo hago pero la verdad no creo que se pueda por el poco espacio para las respuestas
Hola Javierdpp, gracias por contestar tan rápido. No era mi intención insinuar que no quieras compartir la información. Ya sea por correo o por aquí, la estás compartiendo, y de hecho, el ofrecimiento a Byfrost ha salido de ti.
Pensaba que las librerías estarían colgadas en la web y bastaría con enlazarlas. Ahora soy consciente de que no es así.
Lo ideal sería que Casidiablo las implementara en el código del ejemplo o creara un nuevo post con ellas. Pero supongo que tendrá otras ocupaciones en su vida y por otra parte, no soy quien para opinar lo que debe hacer en su propia web.
Te pongo mi correo por si no te importa enviarme los archivos. Me harías un gran favor y te estaré eternamente agradecido: javikas@hotmail.com
Gracias y un saludo.
Hola ya te enviaron el codigo hermano,
de lo contrario yo te lo envio.
estamos para comparttir
Diablo me gustaria que por medio el evnto de un boton me mostrara una tabla,tipo como cuando muestro un JColorChooseer,
ya que por lo general la tabla lo agrego au panel y el panel al contenedor.
grcias saludos
Hola Byfrost.
Lo primero es que crees una clase tipo JFrame o JDialog que contenga la tabla que quieres mostrar. Lo segundo es crear un evento para el botón, que invoque dicha clase (new MiTabla(); por ejemplo).
Un saludo!
el código me funciona siempre y cuando este abriendo direcciones locales de lo contrario no
olvide decir que mi salida a Internet la hago a través de un proxy por favor indícame si hay que agregar algo en le código
Yo estoy en la misma situación que “colo”, ¿sabrías decirme que código agregar para que pueda salir por un proxy?
Muchas Gracias
Ahhh.. excelente blog!!!
Hola ps la verdad no se si alguien me pudiera responder ademas que para ustedes se muy tonta la pregunta
pero para un archivo .java como ago que se me ejecute????
Hola Hdez,
No hay pregunta tonta… puedes encontrar información de lo que necesitas aquí:
http://casidiablo.net/fundamentos-de-un-entorno-tipico-en-java/
Un saludo!
ASI MISMO COMO ESTA LUEGO