Título: Como cargar una documento .html Publicado por: EricCorona en 8 Diciembre 2009, 01:12 am 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á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ñ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 Título: Re: Como cargar una documento .html Publicado por: Casidiablo en 8 Diciembre 2009, 03:11 am 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:
Un saludo! Título: Como mostrar una documento .html Publicado por: EricCorona en 10 Diciembre 2009, 19:34 pm /*
* @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(); } Título: Re: Como cargar una documento .html Publicado por: Leyer en 10 Diciembre 2009, 19:59 pm utiliza las etiquetas code :¬¬
SL2 Título: Re: Como cargar una documento .html Publicado por: Blitzkrieg' en 10 Diciembre 2009, 21:50 pm Código
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>. |