Como cargar una documento .html

Iniciado por EricCorona, 8 Diciembre 2009, 01:12 AM

0 Miembros y 1 Visitante están viendo este tema.

EricCorona

Hola amigos  Estamos haciendo un miniNavegador y nos surgio la siguiente duda:

Como cargar un documento (un archivo con extensión .html) con contenido hipertextual y que en lugar de tags HTML tendrá tags especiales, las cuales se describen  abajo:

Tag especial                     Significado
<centrado></centrado>    Centra el texto que se encuentre dentro de la etiqueta.
<negrita></negrita>    Da formato bold al texto que se encuentre dentro de la etiqueta.
<cursiva></cursiva>    Da formato de cursiva al texto que se encuentre dentro de la etiqueta.
<subrayado></subrayado>    Subraya el texto que se encuentre dentro de la etiqueta.
<liga hacia=""></liga>    Permite poner un vínculo a un texto o imagen hacia una página.
<imagen desde="" texto=""></imagen>    Permite poner una imagen en el documento con un texto alternativo.
<vineta></vineta>    Coloca • viñetas al texto que se encuentre dentro de la etiqueta.
<tachado></tachado>    Tacha el texto que se encuentre dentro de la etiqueta.
<letra color="" tamano=""></letra>    Da color y tamaño al texto que se encuentre dentro de la etiqueta.
<indice tipo=""></indice>    Coloca al texto que se encuentre dentro de la etiqueta como índice, ya sea superíndice o subíndice según el valor del atributo tipo, el cual puede ser sup (para superíndice) o sub (para subíndice).


les dejo el codigo:


/*
* @name:       MiniNavegador.java ©Copyleft
* @description:                  Este es un mini navegador en java
* @author:       Eric Corona
* @date:          5 de Diciembre de 2009
* @version:       1.0
*/



import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;
import java.io.IOException;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.html.*; // <-- Esta es el package clave del mininavegador



// Clase que muestra un mini navegador ultra mega sencillo
public class MiniNavegador extends JFrame implements HyperlinkListener {


    // Botones de regreso y avance de las páginas:
    private JButton backButton, forwardButton;

    // Cajita de texto para la URL:
    private JTextField locationTextField;

    // Esta clase JEditorPane admite texto plano, HTML y RTF
    // Permite mezclar fuentes, colores e imágenes
    // Permite desplegar contenido HTML al indicarle el tipo de contenido (text/html):
    private JEditorPane displayEditorPane;

    // Este arreglo sirve para ir haciendo la lista de páginas visitadas:
    private ArrayList pageList = new ArrayList();

    // Método constructor del MiniNavegador:
    public MiniNavegador() {
        // Al extender de JFrame, le podemos poner un título de ventana al mini:
        super("Mini Navegador Ismael Perea");

        // Tamaño (ancho y largo) del mini:
        setSize(800, 700);

        // Manejo de la salida (exit) del mini:
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                actionExit();
            }
        });

        // Un pequeño menú (lo ideal es que le agreguen la opción de "Abrir archivo"):
        JMenuBar menuBar = new JMenuBar();
        JMenu fileMenu = new JMenu("Menú");
        fileMenu.setMnemonic(KeyEvent.VK_M);
        JMenuItem fileExitMenuItem = new JMenuItem("Salir", KeyEvent.VK_S);
        fileExitMenuItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                actionExit();
            }
        });
        fileMenu.add(fileExitMenuItem);
        menuBar.add(fileMenu);
        setJMenuBar(menuBar);

        // Colocamos en el panel los botones del mini, además de la cajita del URL:
        JPanel buttonPanel = new JPanel();
        backButton = new JButton("< P'atrás");
        backButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                actionBack();
            }
        });
        backButton.setEnabled(false);
        buttonPanel.add(backButton);
        forwardButton = new JButton("P'adelante >");
        forwardButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                actionForward();
            }
        });
        forwardButton.setEnabled(false);
        buttonPanel.add(forwardButton);
        locationTextField = new JTextField("http://",35);
        locationTextField.addKeyListener(new KeyAdapter() {
            public void keyReleased(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    actionGo();
                }
            }
        });
        buttonPanel.add(locationTextField);
        JButton goButton = new JButton("Cargar página >>");
        goButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                actionGo();
            }
        });
        buttonPanel.add(goButton);

        // Preparamos a JEditorPane para recibir HTML y desplegarlo bonito (con merengue):
        displayEditorPane = new JEditorPane();
        displayEditorPane.setContentType("text/html"); // <-- EL SECRETO DE TODO :)
        displayEditorPane.setEditable(false);
        displayEditorPane.addHyperlinkListener(this);

        // Página para precargar:
        String paginaInicial = "http://rigel.fca.unam.mx";
        String miBlog = "http://aprender.fca.unam.mx/~iperea";

        // Creo mi index:
        String  miIndex  = "<html><head><title>Ismael Perea Mini Navegador</title></head><center>";
              miIndex += "<body><b>Hola a todos mis alumnos</b><br />" + "<i>Este es mi mini navegador</i><br />";
              miIndex += "<font face=\"arial\">Como podr&aacute;n ver es muy sencillo</font><br />";
              miIndex += "<font face=\"courier\">pero funciona</font><br />";
              miIndex += "<font size=\"15\">para la clase de progra</font><br />";
              miIndex += "<font color=\"red\">y los caprichos del profe gru&ntilde;on... jejejejeje</font><br />";
              miIndex += "<img src=\"file:foto.png\" alt=\"Yo mero\"></img><br />";
              miIndex += "<a href=\"" + miBlog + "\">Mi blog</a></center>";
              miIndex += "</body></html>";

          displayEditorPane.setText(miIndex);

       

        /**************************************************************
        try{
           displayEditorPane.setPage(paginaInicial);
        }catch (IOException e) {
            System.err.println("No es posible cargar la página: " + e);
       }
      ***************************************************************/

        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(buttonPanel, BorderLayout.NORTH);
        getContentPane().add(new JScrollPane(displayEditorPane),
                BorderLayout.CENTER);
    }

    // Salir del mini:
    private void actionExit() {
        System.exit(0);
    }

    // Para regresar a la página anterior desde la actual:
    private void actionBack() {
        URL currentUrl = displayEditorPane.getPage();
        int pageIndex = pageList.indexOf(currentUrl.toString());
        try {
            showPage(
                    new URL((String) pageList.get(pageIndex - 1)), false);
        } catch (Exception e) {}
    }

    // Para ir a la página siguiente desde la actual:
    private void actionForward() {
        URL currentUrl = displayEditorPane.getPage();
        int pageIndex = pageList.indexOf(currentUrl.toString());
        try {
            showPage(
                    new URL((String) pageList.get(pageIndex + 1)), false);
        } catch (Exception e) {}
    }

    // Para cargar y mostrar la página ingresada en el campito de la URL:
    private void actionGo() {
        URL verifiedUrl = verifyUrl(locationTextField.getText());
        if (verifiedUrl != null) {
            showPage(verifiedUrl, true);
        } else {
            showError("¡No es una URL válida!");
        }
    }

    // Mostrar un mensaje de error:
    private void showError(String errorMessage) {
        JOptionPane.showMessageDialog(this, errorMessage,
                "¡¡¡¡ F I J A T E !!!!", JOptionPane.ERROR_MESSAGE);
    }

    // Verifica el formato de la URL:
    private URL verifyUrl(String url) {
        // Para que sólo permita URLs que utilicen el protocolo HTTP:
        if (!url.toLowerCase().startsWith("http://"))
            return null;

        // Verifica formato:
        URL verifiedUrl = null;
        try {
            verifiedUrl = new URL(url);
        } catch (Exception e) {
            return null;
        }

        return verifiedUrl;
    }


  // Despliega la página y la agrega a la lista de visitadas:

    private void showPage(URL pageUrl, boolean addToList) {
        // Muestra el bonito cursor de "espérame" mientras se carga la página:
        setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

        try {
            // Obtener la URL de la página actual desplegada:
            URL currentUrl = displayEditorPane.getPage();

            // Carga la página en el JEditorPane:
            displayEditorPane.setPage(pageUrl);

            // Obtener la URL de la nueva página desplegada:
            URL newUrl = displayEditorPane.getPage();

            // Agregar la página a la lista:
            if (addToList) {
                int listSize = pageList.size();
                if (listSize > 0) {
                    int pageIndex =
                            pageList.indexOf(currentUrl.toString());
                    if (pageIndex < listSize - 1) {
                        for (int i = listSize - 1; i > pageIndex; i--) {
                            pageList.remove(i);
                        }
                    }
                }
                pageList.add(newUrl.toString());
            }

            // Actualizar el textito de la URL de la página cargada en ese momento:
            locationTextField.setText(newUrl.toString());

            // Actualiza los botones según la página cargada en ese momento:
            updateButtons();
        } catch (Exception e) {
            // Mensaje de error:
            showError("¡¡¡La página no se puede cargar!!!");
        } finally {
            // Regresar el cursor a su imagen original:
            setCursor(Cursor.getDefaultCursor());
        }
    }

     // Actualiza los botones del P'adelante o P'atrás:
    private void updateButtons() {
        if (pageList.size() < 2) {
            backButton.setEnabled(false);
            forwardButton.setEnabled(false);
        } else {
            URL currentUrl = displayEditorPane.getPage();
            int pageIndex = pageList.indexOf(currentUrl.toString());
            backButton.setEnabled(pageIndex > 0);
            forwardButton.setEnabled(
                    pageIndex < (pageList.size() - 1));
        }
    }

    // Manejo del click en las ligas de las páginas:
    public void hyperlinkUpdate(HyperlinkEvent event) {
        HyperlinkEvent.EventType eventType = event.getEventType();
        if (eventType == HyperlinkEvent.EventType.ACTIVATED) {
            if (event instanceof HTMLFrameHyperlinkEvent) {
                HTMLFrameHyperlinkEvent linkEvent =
                        (HTMLFrameHyperlinkEvent) event;
                HTMLDocument document =
                        (HTMLDocument) displayEditorPane.getDocument();
                document.processHTMLFrameHyperlinkEvent(linkEvent);
            } else {
                showPage(event.getURL(), true);
            }
        }
    }

    // Correr el mini:
    public static void main(String[] args) {
        MiniNavegador navegador = new MiniNavegador();
        navegador.show();
    }

} // Fin de la clase


Casidiablo

Entiendo lo que quieres hacer, aunque no veo explícitamente que lo preguntes XD En fin... se me ocurren dos ideas, una más loca que la otra:

  • Extender la clase JEditorPane (o alguna de las superclases de esta) y sobrescribir los métodos (no se cuales son, tendrías que buscar) que hagan la parte del parsing de HTML.
  • Cuando recibas el archivo analizas las etiquetas que tiene y si ves algo como <centrado> lo cambias por <center> y luego sí se lo pasas al JEditorPane para que haga el renderizado HTML. (esta opción es la más sencilla, obviamente).

    Un saludo!

EricCorona

/*
* @name:          MiniNavegador.java ©Copyleft
* @description:    Este es un mini navegador en java
* @author:       Ismael Perea
* @date:          16 de noviembre de 2009
* @version:       1.0
*/



import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;
import java.io.IOException;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.html.*; // <-- Esta es el package clave del mininavegador
import java.io.File.*;
import javax.swing.JFileChooser.*;
/*
* Revisen las siguientes ligas:
* http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JEditorPane.html
* http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JEditorPane.html
* http://java.sun.com/docs/books/tutorial/uiswing/components/editorpane.html
*/

// Clase que muestra un mini navegador ultra mega sencillo
public class MiniNavegador extends JFrame implements HyperlinkListener {


    // Botones de regreso y avance de las páginas:
    private JButton backButton, forwardButton;

    // Cajita de texto para la URL:
    private JTextField locationTextField;

    // Esta clase JEditorPane admite texto plano, HTML y RTF
    // Permite mezclar fuentes, colores e imágenes
    // Permite desplegar contenido HTML al indicarle el tipo de contenido (text/html):
    private JEditorPane displayEditorPane;

    // Este arreglo sirve para ir haciendo la lista de páginas visitadas:
    private ArrayList pageList = new ArrayList();

    // Método constructor del MiniNavegador:
    public MiniNavegador() {
        // Al extender de JFrame, le podemos poner un título de ventana al mini:
        super("Mini Navegador Del equipo $lang");

        // Tamaño (ancho y largo) del mini:
        setSize(800, 700);

        // Manejo de la salida (exit) del mini:
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                actionExit();
            }
        });

        // Un pequeño menú (lo ideal es que le agreguen la opción de "Abrir archivo"):
        JMenuBar menuBar = new JMenuBar();
        JMenu fileMenu = new JMenu("Menú");
        fileMenu.setMnemonic(KeyEvent.VK_M);
        JMenuItem fileExitMenuItem = new JMenuItem("Salir", KeyEvent.VK_S);
        fileExitMenuItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                actionExit();
            }
        });
        fileMenu.add(fileExitMenuItem);
        menuBar.add(fileMenu);
        setJMenuBar(menuBar);



        // Crear boton abrir

        fileMenu.setMnemonic(KeyEvent.VK_A);
        JMenuItem fileOpenMenuItem = new JMenuItem("Abrir", KeyEvent.VK_A);
        fileOpenMenuItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JFileChooser fc = new JFileChooser("C:/");
        fc.showOpenDialog(fc);

        int returnVal =  fc.showOpenDialog(fc);
       
       Archivo selectedFile = null;

        if (returnVal== JFileChooser.APPROVE_OPTION)
            {
           selectedFile = fc.getSelectedFile();

            }

        //fileMenu.addActionListener();
            }
           
        });
        fileMenu.add(fileOpenMenuItem);
        menuBar.add(fileMenu);
        setJMenuBar(menuBar);

       
        // Colocamos en el panel los botones del mini, además de la cajita del URL:
        JPanel buttonPanel = new JPanel();
        backButton = new JButton("< P'atrás");
        backButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                actionBack();
            }
        });
        backButton.setEnabled(false);
        buttonPanel.add(backButton);
        forwardButton = new JButton("P'adelante >");
        forwardButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                actionForward();
            }
        });
        forwardButton.setEnabled(false);
        buttonPanel.add(forwardButton);
        locationTextField = new JTextField("http://",35);
        locationTextField.addKeyListener(new KeyAdapter() {
            public void keyReleased(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    actionGo();
                }
            }
        });
        buttonPanel.add(locationTextField);
        JButton goButton = new JButton("Cargar página >>");
        goButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                actionGo();
            }
        });
        buttonPanel.add(goButton);

        // Preparamos a JEditorPane para recibir HTML y desplegarlo bonito (con merengue):
        displayEditorPane = new JEditorPane();
        displayEditorPane.setContentType("text/html"); // <-- EL SECRETO DE TODO)
        displayEditorPane.setEditable(false);
        displayEditorPane.addHyperlinkListener(this);

        // Página para precargar:
        String paginaInicial = "http://rigel.fca.unam.mx";
        String miBlog = "http://aprender.fca.unam.mx/~iperea";

        // Creo mi index:
        String  miIndex  = "<html><head><title>Ismael Perea Mini Navegador</title></head><center>";
              miIndex += "<body><b>Trabjo del Equipo $Lang</b><br />" + "<i>Este es un mini navegadorr</i><br />";
              miIndex += "<font color=\"red\">El browser deberia funcionar</font><br />";
              miIndex += "<img src=\"file:foto.png\"></img><br />";
              miIndex += "</body></html>";

          displayEditorPane.setText(miIndex);

        /*
         * ¿Qué pasa si comentas la línea de arriba y
         * descomentas el siguiente bloque?
         */

        /**************************************************************
        try{
           displayEditorPane.setPage(paginaInicial);
        }catch (IOException e) {
            System.err.println("No es posible cargar la página: " + e);
       }
      ***************************************************************/

        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(buttonPanel, BorderLayout.NORTH);
        getContentPane().add(new JScrollPane(displayEditorPane),
                BorderLayout.CENTER);
    }

    // Salir del mini:
    private void actionExit() {
        System.exit(0);
    }

    // Para regresar a la página anterior desde la actual:
    private void actionBack() {
        URL currentUrl = displayEditorPane.getPage();
        int pageIndex = pageList.indexOf(currentUrl.toString());
        try {
            showPage(
                    new URL((String) pageList.get(pageIndex - 1)), false);
        } catch (Exception e) {}
    }

    // Para ir a la página siguiente desde la actual:
    private void actionForward() {
        URL currentUrl = displayEditorPane.getPage();
        int pageIndex = pageList.indexOf(currentUrl.toString());
        try {
            showPage(
                    new URL((String) pageList.get(pageIndex + 1)), false);
        } catch (Exception e) {}
    }

    // Para cargar y mostrar la página ingresada en el campito de la URL:
    private void actionGo() {
        URL verifiedUrl = verifyUrl(locationTextField.getText());
        if (verifiedUrl != null) {
            showPage(verifiedUrl, true);
        } else {
            showError("¡No es una URL válida!");
        }
    }

    // Mostrar un mensaje de error:
    private void showError(String errorMessage) {
        JOptionPane.showMessageDialog(this, errorMessage,
                "¡¡¡¡ F I J A T E !!!!", JOptionPane.ERROR_MESSAGE);
    }

    // Verifica el formato de la URL:
    private URL verifyUrl(String url) {
        // Para que sólo permita URLs que utilicen el protocolo HTTP:
        if (!url.toLowerCase().startsWith("http://"))
            return null;

        // Verifica formato:
        URL verifiedUrl = null;
        try {
            verifiedUrl = new URL(url);
        } catch (Exception e) {
            return null;
        }

        return verifiedUrl;
    }


  // Despliega la página y la agrega a la lista de visitadas:

    private void showPage(URL pageUrl, boolean addToList) {
        // Muestra el bonito cursor de "espérame" mientras se carga la página:
        setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

        try {
            // Obtener la URL de la página actual desplegada:
            URL currentUrl = displayEditorPane.getPage();

            // Carga la página en el JEditorPane:
            displayEditorPane.setPage(pageUrl);

            // Obtener la URL de la nueva página desplegada:
            URL newUrl = displayEditorPane.getPage();

            // Agregar la página a la lista:
            if (addToList) {
                int listSize = pageList.size();
                if (listSize > 0) {
                    int pageIndex =
                            pageList.indexOf(currentUrl.toString());
                    if (pageIndex < listSize - 1) {
                        for (int i = listSize - 1; i > pageIndex; i--) {
                            pageList.remove(i);
                        }
                    }
                }
                pageList.add(newUrl.toString());
            }

            // Actualizar el textito de la URL de la página cargada en ese momento:
            locationTextField.setText(newUrl.toString());

            // Actualiza los botones según la página cargada en ese momento:
            updateButtons();
        } catch (Exception e) {
            // Mensaje de error:
            showError("¡¡¡La página no se puede cargar!!!");
        } finally {
            // Regresar el cursor a su imagen original:
            setCursor(Cursor.getDefaultCursor());
        }
    }

     // Actualiza los botones del P'adelante o P'atrás:
    private void updateButtons() {
        if (pageList.size() < 2) {
            backButton.setEnabled(false);
            forwardButton.setEnabled(false);
        } else {
            URL currentUrl = displayEditorPane.getPage();
            int pageIndex = pageList.indexOf(currentUrl.toString());
            backButton.setEnabled(pageIndex > 0);
            forwardButton.setEnabled(
                    pageIndex < (pageList.size() - 1));
        }
    }

    // Manejo del click en las ligas de las páginas:
    public void hyperlinkUpdate(HyperlinkEvent event) {
        HyperlinkEvent.EventType eventType = event.getEventType();
        if (eventType == HyperlinkEvent.EventType.ACTIVATED) {
            if (event instanceof HTMLFrameHyperlinkEvent) {
                HTMLFrameHyperlinkEvent linkEvent =
                        (HTMLFrameHyperlinkEvent) event;
                HTMLDocument document =
                        (HTMLDocument) displayEditorPane.getDocument();
                document.processHTMLFrameHyperlinkEvent(linkEvent);
            } else {
                showPage(event.getURL(), true);
            }
        }
    }

    // Correr el mini:
    public static void main(String[] args) {
        MiniNavegador navegador = new MiniNavegador();
        navegador.show();
    }

} // Fin de la clase



Pueden ayudarme me marque error en lo siguiente

Archivo selectedFile = null;

        if (returnVal== JFileChooser.APPROVE_OPTION)
            {
           selectedFile = fc.getSelectedFile();

            }

        //fileMenu.addActionListener();
            }

Leyer


Blitzkrieg'

#4
Código (java) [Seleccionar]

/*
* @name:          MiniNavegador.java ©Copyleft
* @description:    Este es un mini navegador en java
* @author:       Ismael Perea
* @date:          16 de noviembre de 2009
* @version:       1.0
*/

import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;
import java.io.IOException;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.html.*; // <-- Esta es el package clave del mininavegador
import java.io.File.*;
import javax.swing.JFileChooser.*;
/*
* Revisen las siguientes ligas:
* http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JEditorPane.html
* http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JEditorPane.html
* http://java.sun.com/docs/books/tutorial/uiswing/components/editorpane.html
*/

// Clase que muestra un mini navegador ultra mega sencillo
public class MiniNavegador extends JFrame implements HyperlinkListener {


   // Botones de regreso y avance de las páginas:
   private JButton backButton, forwardButton;

   // Cajita de texto para la URL:
   private JTextField locationTextField;

   // Esta clase JEditorPane admite texto plano, HTML y RTF
   // Permite mezclar fuentes, colores e imágenes
   // Permite desplegar contenido HTML al indicarle el tipo de contenido (text/html):
   private JEditorPane displayEditorPane;

   // Este arreglo sirve para ir haciendo la lista de páginas visitadas:
   private ArrayList pageList = new ArrayList();

   // Método constructor del MiniNavegador:
   public MiniNavegador() {
       // Al extender de JFrame, le podemos poner un título de ventana al mini:
       super("Mini Navegador Del equipo $lang");

       // Tamaño (ancho y largo) del mini:
       setSize(800, 700);

       // Manejo de la salida (exit) del mini:
       addWindowListener(new WindowAdapter() {
           public void windowClosing(WindowEvent e) {
               actionExit();
           }
       });

       // Un pequeño menú (lo ideal es que le agreguen la opción de "Abrir archivo"):
       JMenuBar menuBar = new JMenuBar();
       JMenu fileMenu = new JMenu("Menú");
       fileMenu.setMnemonic(KeyEvent.VK_M);
       JMenuItem fileExitMenuItem = new JMenuItem("Salir", KeyEvent.VK_S);
       fileExitMenuItem.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               actionExit();
           }
       });
       fileMenu.add(fileExitMenuItem);
       menuBar.add(fileMenu);
       setJMenuBar(menuBar);



       // Crear boton abrir

       fileMenu.setMnemonic(KeyEvent.VK_A);
       JMenuItem fileOpenMenuItem = new JMenuItem("Abrir", KeyEvent.VK_A);
       fileOpenMenuItem.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               JFileChooser fc = new JFileChooser("C:/");
       fc.showOpenDialog(fc);

       int returnVal =  fc.showOpenDialog(fc);
       
      Archivo selectedFile = null;

       if (returnVal== JFileChooser.APPROVE_OPTION)
           {
          selectedFile = fc.getSelectedFile();

           }

       //fileMenu.addActionListener();
           }
           
       });
       fileMenu.add(fileOpenMenuItem);
       menuBar.add(fileMenu);
       setJMenuBar(menuBar);

     
       // Colocamos en el panel los botones del mini, además de la cajita del URL:
       JPanel buttonPanel = new JPanel();
       backButton = new JButton("< P'atrás");
       backButton.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               actionBack();
           }
       });
       backButton.setEnabled(false);
       buttonPanel.add(backButton);
       forwardButton = new JButton("P'adelante >");
       forwardButton.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               actionForward();
           }
       });
       forwardButton.setEnabled(false);
       buttonPanel.add(forwardButton);
       locationTextField = new JTextField("http://",35);
       locationTextField.addKeyListener(new KeyAdapter() {
           public void keyReleased(KeyEvent e) {
               if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                   actionGo();
               }
           }
       });
       buttonPanel.add(locationTextField);
       JButton goButton = new JButton("Cargar página >>");
       goButton.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
               actionGo();
           }
       });
       buttonPanel.add(goButton);

       // Preparamos a JEditorPane para recibir HTML y desplegarlo bonito (con merengue):
       displayEditorPane = new JEditorPane();
       displayEditorPane.setContentType("text/html"); // <-- EL SECRETO DE TODO)
       displayEditorPane.setEditable(false);
       displayEditorPane.addHyperlinkListener(this);

       // Página para precargar:
       String paginaInicial = "http://rigel.fca.unam.mx";
       String miBlog = "http://aprender.fca.unam.mx/~iperea";

       // Creo mi index:
       String  miIndex  = "<html><head><title>Ismael Perea Mini Navegador</title></head><center>";
             miIndex += "<body><b>Trabjo del Equipo $Lang</b><br />" + "<i>Este es un mini navegadorr</i><br />";
             miIndex += "<font color=\"red\">El browser deberia funcionar</font><br />";
             miIndex += "<img src=\"file:foto.png\"></img><br />";
             miIndex += "</body></html>";

         displayEditorPane.setText(miIndex);

       /*
        * ¿Qué pasa si comentas la línea de arriba y
        * descomentas el siguiente bloque?
        */

       /**************************************************************
       try{
          displayEditorPane.setPage(paginaInicial);
       }catch (IOException e) {
           System.err.println("No es posible cargar la página: " + e);
      }
     ***************************************************************/

       getContentPane().setLayout(new BorderLayout());
       getContentPane().add(buttonPanel, BorderLayout.NORTH);
       getContentPane().add(new JScrollPane(displayEditorPane),
               BorderLayout.CENTER);
   }

   // Salir del mini:
   private void actionExit() {
       System.exit(0);
   }

   // Para regresar a la página anterior desde la actual:
   private void actionBack() {
       URL currentUrl = displayEditorPane.getPage();
       int pageIndex = pageList.indexOf(currentUrl.toString());
       try {
           showPage(
                   new URL((String) pageList.get(pageIndex - 1)), false);
       } catch (Exception e) {}
   }

   // Para ir a la página siguiente desde la actual:
   private void actionForward() {
       URL currentUrl = displayEditorPane.getPage();
       int pageIndex = pageList.indexOf(currentUrl.toString());
       try {
           showPage(
                   new URL((String) pageList.get(pageIndex + 1)), false);
       } catch (Exception e) {}
   }

   // Para cargar y mostrar la página ingresada en el campito de la URL:
   private void actionGo() {
       URL verifiedUrl = verifyUrl(locationTextField.getText());
       if (verifiedUrl != null) {
           showPage(verifiedUrl, true);
       } else {
           showError("¡No es una URL válida!");
       }
   }

   // Mostrar un mensaje de error:
   private void showError(String errorMessage) {
       JOptionPane.showMessageDialog(this, errorMessage,
               "¡¡¡¡ F I J A T E !!!!", JOptionPane.ERROR_MESSAGE);
   }

   // Verifica el formato de la URL:
   private URL verifyUrl(String url) {
       // Para que sólo permita URLs que utilicen el protocolo HTTP:
       if (!url.toLowerCase().startsWith("http://"))
           return null;

       // Verifica formato:
       URL verifiedUrl = null;
       try {
           verifiedUrl = new URL(url);
       } catch (Exception e) {
           return null;
       }

       return verifiedUrl;
   }


 // Despliega la página y la agrega a la lista de visitadas:

   private void showPage(URL pageUrl, boolean addToList) {
       // Muestra el bonito cursor de "espérame" mientras se carga la página:
       setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

       try {
           // Obtener la URL de la página actual desplegada:
           URL currentUrl = displayEditorPane.getPage();

           // Carga la página en el JEditorPane:
           displayEditorPane.setPage(pageUrl);

           // Obtener la URL de la nueva página desplegada:
           URL newUrl = displayEditorPane.getPage();

           // Agregar la página a la lista:
           if (addToList) {
               int listSize = pageList.size();
               if (listSize > 0) {
                   int pageIndex =
                           pageList.indexOf(currentUrl.toString());
                   if (pageIndex < listSize - 1) {
                       for (int i = listSize - 1; i > pageIndex; i--) {
                           pageList.remove(i);
                       }
                   }
               }
               pageList.add(newUrl.toString());
           }

           // Actualizar el textito de la URL de la página cargada en ese momento:
           locationTextField.setText(newUrl.toString());

           // Actualiza los botones según la página cargada en ese momento:
           updateButtons();
       } catch (Exception e) {
           // Mensaje de error:
           showError("¡¡¡La página no se puede cargar!!!");
       } finally {
           // Regresar el cursor a su imagen original:
           setCursor(Cursor.getDefaultCursor());
       }
   }

    // Actualiza los botones del P'adelante o P'atrás:
   private void updateButtons() {
       if (pageList.size() < 2) {
           backButton.setEnabled(false);
           forwardButton.setEnabled(false);
       } else {
           URL currentUrl = displayEditorPane.getPage();
           int pageIndex = pageList.indexOf(currentUrl.toString());
           backButton.setEnabled(pageIndex > 0);
           forwardButton.setEnabled(
                   pageIndex < (pageList.size() - 1));
       }
   }

   // Manejo del click en las ligas de las páginas:
   public void hyperlinkUpdate(HyperlinkEvent event) {
       HyperlinkEvent.EventType eventType = event.getEventType();
       if (eventType == HyperlinkEvent.EventType.ACTIVATED) {
           if (event instanceof HTMLFrameHyperlinkEvent) {
               HTMLFrameHyperlinkEvent linkEvent =
                       (HTMLFrameHyperlinkEvent) event;
               HTMLDocument document =
                       (HTMLDocument) displayEditorPane.getDocument();
               document.processHTMLFrameHyperlinkEvent(linkEvent);
           } else {
               showPage(event.getURL(), true);
           }
       }
   }

   // Correr el mini:
   public static void main(String[] args) {
       MiniNavegador navegador = new MiniNavegador();
       navegador.show();
   }

} // Fin de la clase


Así queda mas legible el código, recuerda usar etiquetas code.

En cuanto al problema, pues como Casidiablo, sugiero que cuando el programa encuentre una etiqueta como <centrado> la convierta en <center>.