2009-04-14 23 views
12

¿Hay una manera simple de abrir una página web dentro de un JPanel de GUI?¿Cómo se abren páginas web en Java?

En caso negativo, ¿cómo se abre una página web con el navegador web predeterminado de la computadora?

Estoy esperando algo que pueda hacer con menos de 20 líneas de código y, como mucho, necesitaría crear una clase. Sin embargo, no hay razón para 20, solo esperando un pequeño código ...

Estoy planeando 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 se vinculan entre sí, así que espero que solo tenga que llamar una URL con mi código.

+1

Posible duplicado de [Llegar GUI Java para abrir una página web en el navegador web] (http: // stackoverflow.com/questions/602032/getting-java-gui-to-open-a-webpage-in-web-browser) – Nathan

+0

Véase también http://stackoverflow.com/questions/6360744/how-to-render-basic -html-markup-inside-a-jpanel-in-java-swing –

Respuesta

26

Apertura de 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 recuerdo correctamente mi conocimiento de Swing limitado), pero es muy limitado y no apto para un navegador de propósito general.

+0

Desktop API es solo para java 1.6 – dfa

+7

@dfa: ¿entonces? No se exigía nada antes y es razonable usar API actualizadas. –

+2

Tenga en cuenta que si su URI es una cadena, debe envolverla con 'new java.net.URI (el URI)' –

2

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)

    Pronto, también habrá una tercera:

  3. El componente JWebPane, que al parecer aún no ha sido liberado

JEditorPane es muy puros huesos; no maneja CSS o JavaScript, e incluso tiene que manejar hipervínculos usted mismo. Pero puede incorporarlo a su aplicación de forma más sencilla que el lanzamiento de FireFox.

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(); 
      } 
     } 
    } 
}); 
+0

Simplemente curioso, pero ¿cómo podría haber mejorado esta respuesta? –

+0

saua dijo "JEditorPane tiene algo de capacidad HTML, pero es muy limitado y no apto para un navegador de propósito general". así que simplemente fui con la línea de código más simple publicada por saua ... No iba a buscar algo muy bonito, solo estoy tratando de armar algo que funcione –

+0

Probablemente probaré tu código más adelante, pero No traté de ejecutarlo ... así que no quería hacer clic en que era una respuesta, ya que en realidad no sé –

-1

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

+0

Si lo hace con Runtime, necesitaría saber qué navegador ejecuta el usuario. Difícilmente es la mejor opción –

+0

Así que puedes verificar la presencia de 3 navegadores. Nunca dije que esta fuera la mejor opción. – Geo

0

Si está desarrollando un applet, puede usar 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 Browser Launch.

0

no lo he probado en absoluto, pero el cobra HTML parser and viewer del lobo browser, un navegador escrito 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"); 
    } 
} 
-2

Inténtelo 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(); 
} 
Cuestiones relacionadas