gentoo linux, java, software libre y otras hierbas
mar, 03 2008 - 11:57 am

[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…

Leer Archivo Servidor - Imagen

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

Descargar código fuente

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

2 enlaces entrantes

62 Comentarios en “[código] Crear un navegador Web básico en Java”

  1. deyabu dice:

    Mmm teoricamente despues de compliarlo deberia andar verdad? o necesita otras cosas? por ke no logro ahcerlo funcionar …

  2. gabino cruz dice:

    favor asesorar como actualizar navegador java…

  3. como haces para que la aplicacion no se quede Clavada mientras hace la busqueda?

  4. DAvid dice:

    no se le pude poner nombre, iconos cosas así

  5. Alan dice:

    se podra reproducir flash????

    • Cristian dice:

      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!

  6. javierdpp dice:

    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

  7. Chechoman dice:

    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

  8. ac dice:

    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

  9. david dice:

    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.

¡Déjanos tu comentario!