2009-04-14 15 views
12

Gibt es eine einfache Möglichkeit, eine Webseite im JPanel einer GUI zu öffnen?Wie öffne ich Webseiten in Java?

Wenn nicht, wie öffne ich eine Webseite mit dem Standardwebbrowser des Computers?

Ich hoffe auf etwas, das ich mit weniger als 20 Zeilen Code tun kann, und würde höchstens eine Klasse erstellen müssen. Aber kein Grund für 20, nur für wenig Code zu hoffen ...

Ich plane, einen Führer zu öffnen, um mit einem Spiel zu gehen. Der Leitfaden ist online und hat mehrere Seiten, aber die Seiten sind miteinander verlinkt, daher hoffe ich, dass ich nur eine URL mit meinem Code aufrufen muss.

+1

Mögliche Duplikat [Erste Java-GUI eine Webseite in Web-Browser zu öffnen] (http: // stackoverflow.com/questions/602032/getting-java-gui-to-open-a-webpage-in-web-browser) – Nathan

+0

Siehe auch http://stackoverflow.com/questions/6360744/how-to-render-basic -html-markup-inside-a-jpanel-in-java-swing –

Antwort

26

eine Web-Seite mit dem Standard-Web-Browser zu öffnen, ist einfach:

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

einen Browser Embedding nicht so einfach ist. JEditorPane hat einige HTML-Fähigkeit (wenn ich mein begrenztes Swing-Wissen richtig erinnere), aber es ist sehr begrenzt und nicht geeignet für einen Allzweck-Browser.

+0

Desktop-API ist nur für Java 1.6 – dfa

+7

@ dfa: so? Es gab keine Notwendigkeit für etwas früher und es ist sinnvoll, aktuelle APIs zu verwenden. –

+2

Beachten Sie, dass Sie, wenn Ihr URI eine Zeichenfolge ist, diese mit 'new java.net.URI (der URI)' umbrechen müssen –

2

Es gibt zwei Standardmethoden, die ich kenne:

  1. Die Standard JEditorPane Komponente
  2. Desktop. getDesktop(). browse(URI) zu den Standard-Browser des Benutzers zu öffnen (Java 6 oder höher)

    Bald wird es auch ein drittes sein:

  3. Die JWebPane Komponente, die offenbar noch nicht

JEditorPane sehr freigegeben worden ist blanke Knochen; Es behandelt weder CSS noch JavaScript und Sie müssen sogar selbst mit Hyperlinks umgehen. Aber Sie können es nahtlos in Ihre Anwendung einbetten, als FireFox starten würde.

Hier ist ein Beispiel, wie die Verwendung von Hyperlinks (Ihre Dokumente unter der Annahme, keine Frames verwenden):

// ... 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

Nur neugierig, aber wie könnte ich diese Antwort verbessert haben? –

+0

saga sagte "JEditorPane hat einige HTML-Fähigkeit, aber es ist sehr begrenzt und nicht geeignet für einen universellen Browser." also ging ich einfach mit der etwas einfacheren Codezeile von saua, die gepostet wurde ... Ich wollte nichts sehr schönes suchen, ich versuche nur, etwas zusammenzubauen, das funktioniert –

+0

Ich werde deinen Code wahrscheinlich später ausprobieren, aber ich habe nicht versucht, es auszuführen ... also wollte ich nicht darauf klicken, dass es eine antwort war, da ich es nicht weiß –

-1

Ich weiß nicht, ob eine solche integrierte in existiert, aber ich würde die Runtime Klasse verwenden exec mit iexplore.exe oder firefox.exe als Argument.

+0

Wenn Sie es mit Runtime tun, müssten Sie wissen, welchen Browser der Benutzer ausführt. Kaum die beste Option –

+0

So überprüfen Sie das Vorhandensein von 3 Browsern. Ich habe nie gesagt, dass dies die beste Option ist. – Geo

0

Wenn Sie ein Applet entwickeln, können Sie AppletContext.showDocument verwenden. Das wäre ein Einzeiler:

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

Wenn Sie eine Desktop-Anwendung entwickeln, könnten Sie Bare Bones Browser Launch versuchen.

0

habe es überhaupt nicht versucht, aber die cobra HTML parser and viewer von der lobo browser, ein Browser in reinem Java geschrieben, kann sein, was Sie wollen.Sie bieten Beispielcode ein Online-HTML-Viewer einzurichten:

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

Bitte versuchen Sie es unten Code:

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