Wie öffnet man Web-Seiten in Java?
Frage
Gibt es eine einfache Möglichkeit, eine Web-Seite innerhalb eines GUI JPanel zu öffnen?
Wenn nicht, wie öffnet man eine Web-Seite mit dem Standard-Web-Browser des Computers?
Ich hoffe auf etwas, das ich mit unter 20 Zeilen Code zu tun, und höchstens müsste eine Klasse erstellen. Kein Grund für 20 aber nur für wenig Code der Hoffnung ...
Ich plane, einen Führer zu öffnen mit einem Spiel zu gehen. Der Leitfaden ist online und hat mehrere Seiten, aber die Seiten miteinander verlinkt, so dass ich hoffe, ich habe nur mit meinem Code eine URL aufrufen.
Lösung
Öffnen einer Web-Seite mit dem Standard-Web-Browser ist einfach:
java.awt.Desktop.getDesktop().browse(theURI);
einen Browser Einbettung ist nicht so einfach. JEditorPane
hat einig HTML-Fähigkeit (wenn ich meinen begrenzten Swing Weiß richtig erinnere), aber es ist sehr begrenzt und nicht geeignet für einen Universal Browser.
Andere Tipps
Es gibt zwei Standardmethoden, die ich kenne:
- Der Standard
JEditorPane
Komponente -
Desktop
.getDesktop()
.browse(URI)
zum öffnen des Standard-Browser des Benutzers (Java 6 oder höher)Bald wird es auch noch eine dritte:
- Die
JWebPane
Komponente, die offenbar noch nicht freigegeben worden
JEditorPane
ist sehr nackten Knochen; es behandelt nicht CSS oder JavaScript, und Sie sogar Hyperlinks selbst behandeln müssen. Aber man kann es in Ihre Anwendung einbetten mehr nahtlos als Start FireFox wäre.
Hier ist ein Beispiel, wie die Verwendung von Hyperlinks (Ihre Dokumenten unter der Annahme nicht verwenden Frames):
// ... 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();
}
}
}
});
Wenn Sie ein Applet sind entwickeln, können Sie AppletContext.showDocument . Das wäre ein Einzeiler:
getAppletContext().showDocument("http://example.com", "_blank");
Wenn Sie eine Desktop-Anwendung entwickeln, könnten Sie versuchen, Bare Bones Browser Starten .
hat es überhaupt nicht versucht, aber der cobra HTML-Parser und Betrachter vom rel="nofollow noreferrer"> lobo Browser
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");
}
}
Ich weiß nicht, ob eine solche integrierte in existiert, aber ich würde die Runtime Klasse exec mit iexplore.exe oder firefox.exe als Argument.
Bitte versuchen Sie es unter 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();
}