Pregunta

¿Hay una manera sencilla para abrir una página web dentro de JPanel de una interfaz gráfica de usuario?

Si no es así, ¿cómo se abre una página web con el navegador web por defecto del equipo?

Estoy esperando por algo que puedo hacer con menos de 20 líneas de código, y como mucho tendría que crear una clase. No hay razón para 20, sin embargo, sólo con la esperanza de poco código ...

Tengo la intención de abrir una guía para ir con un juego. La guía está en línea y tiene varias páginas, pero las páginas que enlazan entre sí, así que espero que sólo tengo que llamar a una URL con mi código.

¿Fue útil?

Solución

Abrir una página web con el navegador web por defecto es fácil:

java.awt.Desktop.getDesktop().browse(theURI);

Incorporación de un navegador no es tan fácil. JEditorPane tiene algunos capacidad de HTML (si no recuerdo mi swing-conocimiento limitado correctamente), pero es muy limitado y no suiteable para un navegador de propósito general.

Otros consejos

Hay dos formas estándar, que yo sepa:

  1. El estándar JEditorPane componente
  2. Desktop . getDesktop() . browse(URI) para abrir el navegador por defecto del usuario (Java 6 o posterior)

    Al poco tiempo, también habrá una tercera:

  3. JWebPane , que al parecer aún no ha sido puesto en libertad

JEditorPane es muy escueto; No maneja CSS o JavaScript, y que incluso tienen que manejar hipervínculos a sí mismo. Pero se puede incrustar en su aplicación más transparente que el lanzamiento de Firefox sería.

Aquí hay un ejemplo de cómo utilizar hipervínculos (suponiendo que sus documentos no utilice marcos):

// ... initialize myEditorPane
myEditorPane.setEditable(false); // to allow it to generate HyperlinkEvents
myEditorPane.addHyperlinkListener(new HyperlinkListener() {
    public void hyperlinkUpdate(HyperlinkEvent e) {
        if (e.getEventType() == HyperlinkEvent.EventType.ENTERED) {
            myEditorPane.setToolTipText(e.getDescription());
        } else if (e.getEventType() == HyperlinkEvent.EventType.EXITED) {
            myEditorPane.setToolTipText(null);
        } else if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
            try {
                myEditorPane.setPage(e.getURL());
            } catch (IOException ex) {
                // handle error
                ex.printStackTrace();
            }
        }
    }
});

Si está desarrollando un applet, puede utilizar AppletContext.showDocument . Eso sería una sola línea:

getAppletContext().showDocument("http://example.com", "_blank");

Si está desarrollando una aplicación de escritorio, puede intentar Bare Bones Iniciar explorador .

No se han probado en absoluto, pero el cobra HTML analizador y el espectador del navegador Lobo , un navegador writen en java puro, puede ser lo que está buscando. Ellos proporcionan código de ejemplo para crear un visor de HTML en línea:

import javax.swing.*;
import org.lobobrowser.html.gui.*;
import org.lobobrowser.html.test.*;

public class BareMinimumTest {
  public static void main(String[] args) throws Exception {
    JFrame window = new JFrame();
    HtmlPanel panel = new HtmlPanel();
    window.getContentPane().add(panel);
    window.setSize(600, 400);
    window.setVisible(true);
    new SimpleHtmlRendererContext(panel, new SimpleUserAgentContext())
    .navigate("http://lobobrowser.org/browser/home.jsp");
  }
}

No sé si existe un built-in tal, pero me gustaría utilizar el Tiempo de ejecución de clase exec con iexplore.exe o firefox.exe como argumento.

Por favor, intente más adelante código:

import java.awt.Desktop;
import java.net.URI;
import java.net.URISyntaxExaception;

//below is the code
//whatvever the url is it has to have https://

Desktop d = Desktop.getDesktop();
try {
    d.browse(new URI("http://google.com"));
} catch (IOException | URISyntaxException e2) {
    e2.printStackTrace();
} 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top