你如何用Java打开网页?

时间:2009-04-14 18:57:51

标签: java web jframe

是否有一种简单的方法可以在GUI的JPanel中打开网页?

如果没有,您如何使用计算机的默认Web浏览器打开网页?

我希望能用20行代码完成一些事情,最多需要创建一个类。没有理由20,只是希望小代码...

我打算打开一个游戏指南。该指南是在线的,有多个页面,但页面相互链接,所以我希望我只需要用我的代码调用一个URL。

6 个答案:

答案 0 :(得分:29)

使用默认网络浏览器打开网页很简单:

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

嵌入浏览器并非易事。 JEditorPane具有一些 HTML功能(如果我能正确记住我有限的Swing知识),但它非常有限且不适用于通用浏览器。

答案 1 :(得分:2)

我知道有两种标准方式:

  1. 标准JEditorPane组件
  2. DesktopgetDesktop()browse(URI)打开用户的默认浏览器(Java 6或更高版本)

    很快,还会有第三个:

  3. JWebPane组件,显然尚未发布
  4. JEditorPane非常简陋;它不处理CSS或JavaScript,你甚至必须自己处理超链接。但是你可以比启动FireFox更加无缝地将它嵌入到你的应用程序中。

    以下是如何使用超链接的示例(假设您的文档不使用框架):

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

答案 2 :(得分:0)

如果您正在开发小程序,则可以使用AppletContext.showDocument。那将是一个单线:

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

如果您正在开发桌面应用程序,可以尝试Bare Bones Browser Launch

答案 3 :(得分:0)

根本没有尝试过,但是来自cobra HTML parser and viewerlobo browser,一个用纯java编写的浏览器,可能就是你所追求的。他们提供了设置在线html查看器的示例代码:

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

答案 4 :(得分:-1)

我不知道这样的内置是否存在,但我会使用Runtime类的 exec 与iexplore.exe或firefox.exe作为参数。

答案 5 :(得分:-2)

请尝试以下代码:

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