[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.
64 Comentarios | deja el tuyo





Mmm teoricamente despues de compliarlo deberia andar verdad? o necesita otras cosas? por ke no logro ahcerlo funcionar …
Ya lo hice funcionar… pero sinceramente no se puede leer sin css xD tenes alguna idea de como se las puede agregar?
Gracias
Hola Deyabu…
Con este ejemplo tan simple no es posible hacer funcionar correctamente el CSS.
Lo que te recomiendo es qu le eches un vistazo a este proyecto:
http://lobobrowser.org/java-browser.jsp
Es software libre, así que puedes mirar el código y aprender de él. Ese navegador sí soporta CSS y JavaScript.
Un saludo!
Muchisimas gracias! ya lo reviso!
esta muy bien tu programa
Excelente proyecto,
veo que tiene ratito… 2005…
Browse Files for Lobo – Java Web Browser
favor asesorar como actualizar navegador java…
como haces para que la aplicacion no se quede Clavada mientras hace la busqueda?
no se le pude poner nombre, iconos cosas así
se podra reproducir flash????
Tal como está este navegador de ejemplo: NO. Sin embargo, si sabes lo que haces, puedes utilizar las librerías del plugin de flash que usan los navegadores normales (recuerda que Flash pertenece a Adobe… no es que uno programe algo para reproducir flash de buenas a primeras). Por supuesto tendrías que usar una librería tipo JNI o similares
Un saludo!
pueden usar una libreria de java que se llama djproject no tiene ningun problema me parece unas de las mejores librerias con respecto a este tema de navegadores hechos en java
package navegadorweb_basico;
import java.awt.*;
import java.awt.ScrollPane;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
public class LeerArchivoServidor extends JFrame {
private JTextField campoIntroducir = new JTextField(“http://”);
private JButton jBtnIr = new JButton(“Ir”);
private ScrollPane scrollPane1 = new ScrollPane();
private JLabel mensaje = new JLabel(“”);
private JEditorPane areaContenido = new JEditorPane();
public LeerArchivoServidor() {
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
this.getContentPane().setLayout(null);
this.setTitle(“Navegador Web simple”);
this.setSize(new Dimension(800, 600));
// crear campoIntroducir y registrar su componente de escucha
this.setForeground(new Color(0, 132, 198));
campoIntroducir.addActionListener(new ActionListener() {
// obtener el documento especificado por el usuario
public void actionPerformed(ActionEvent evento) {
obtenerLaPagina(evento.getActionCommand());
}
}); // fin de la llamada a addActionListener
this.getContentPane().add(mensaje, null);
this.add(campoIntroducir, null);
campoIntroducir.setBounds(new Rectangle(15, 15, 625, 20));
jBtnIr.setBounds(new Rectangle(660, 5, 90, 30));
jBtnIr.setBackground(new Color(216, 242, 224));
jBtnIr.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jBtnIr_actionPerformed(e);
}
});
scrollPane1.setBounds(new Rectangle(5, 40, 775, 500));
mensaje.setBounds(new Rectangle(5, 540, 775, 25));
mensaje.setBackground(new Color(231, 231, 231));
mensaje.setForeground(new Color(16, 16, 16));
mensaje.setFont(new Font(“Cambria”, 1, 18));
//this.scrollPane1.add(areaContenido, null);
mensaje.setHorizontalAlignment(SwingConstants.CENTER);
scrollPane1.add(areaContenido, null);
this.getContentPane().add(scrollPane1, null);
this.getContentPane().add(jBtnIr, null);
this.getContentPane().add(campoIntroducir, null);
// crear areaContenido y registrar componente de escucha de evento HyperlinkEvent
// fin de la clase interna
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());
mensaje.setText(” Cargando… “);
}
}
}); // fin de la llamada a addHyperlinkListener
} // 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);
this.mensaje.setText(” ¡..Navegando..! “);
this.areaContenido.setEnabled(true);
this.areaContenido.setBackground(Color.WHITE);
} catch (IOException excepcionES) {
this.mensaje.setVisible(true);
this.mensaje.setFocusable(true);
this.mensaje.setText(“¡ URL incorrecta, o conexión desactivada… !”);
this.areaContenido.setBackground(new Color(68, 148, 85));
this.areaContenido.setEnabled(false);
}
} // fin del método obtenerLaPagina
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
LeerArchivoServidor aplicacion = new LeerArchivoServidor();
//Centrar la ventana
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = aplicacion.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
aplicacion.setLocation((screenSize.width – frameSize.width) / 2,
(screenSize.height – frameSize.height) / 2);
//Termina de Centrar la ventana
aplicacion.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aplicacion.setVisible(true);
}
private void jBtnIr_actionPerformed(ActionEvent evento) {
this.mensaje.setText(” Cargando… “);
obtenerLaPagina(this.campoIntroducir.getText().toString());
}
} // fin de la clase LeerArchivoServidor
me interesa mucho el navegador web pero en reañidad no tengo idea de como abrirlo me podrias mandar el archivo ya solo para ejecutarlo te dejo mi correo espero puedas de antemano gracias..acrayos_necaxa@hotmail.com
listo con un simple Timer
Necesito ayuda.
se puede programar en java codigo para
1-automatizar: “en escritorio – click derecho – organizar iconos – por nombre”
2-en escritorio cargar pagina web lado derecho (aprox. 15 cms.ancho x alto de pantalla) y mantenerla siempre activa y visible sin que usuario pueda minimizarla ni cerrarla. al volver al escritorio debera mostrar la pagina web activa.
de ser afirmativo en cuanto tiempo se puede tener el codigo desarrollado. y cual seria su costo.
favor enviar telefono para contacto.