2009-03-02 74 views
34

我想要一个Java GUI来打开网页。因此,gui运行一些代码来执行某些操作,然后生成一个html文件。 然后,我希望此文件在创建后立即在Web浏览器(最好是Firefox)中打开。 我该怎么做呢?获取java gui在Web浏览器中打开网页

回答

39

如果您使用的是Java 6或更高版本,请参阅Desktop API,特别是browse。像这样使用它(未测试):

// using this in real life, you'd probably want to check that the desktop 
// methods are supported using isDesktopSupported()... 

String htmlFilePath = "path/to/html/file.html"; // path to your new file 
File htmlFile = new File(htmlFilePath); 

// open the default web browser for the HTML page 
Desktop.getDesktop().browse(htmlFile.toURI()); 

// if a web browser is the default HTML handler, this might work too 
Desktop.getDesktop().open(htmlFile); 
+0

嘿的位置。仍然无法让它工作。我收到以下错误:“错误消息:系统找不到指定的路径。”这是即使我已经给出了确切的路径。 – 2009-03-03 12:26:29

+0

@TheSpecialOne - 你提供一个文件的_local_路径吗?例如:在一个窗口框中,htmlFilePath看起来像“c:\ path \ to \ file.html”。不要使用URL语法... – 2009-03-04 11:34:17

0

我用BrowserLauncher2成功。它会调用所有测试平台上的默认浏览器。我使用它通过JNLP演示软件。该软件下载,运行和驱动用户的浏览器信息页面/反馈等。

JDK 1.4及以上,我相信。

26

雅,但是如果你想通过java程序打开你的默认网页浏览器的网页,那么你可以尝试使用这段代码。

/// file OpenPageInDefaultBrowser.java 
public class OpenPageInDefaultBrowser { 
    public static void main(String[] args) { 
     try { 
     //Set your page url in this string. For eg, I m using URL for Google Search engine 
     String url = "http://www.google.com"; 
     java.awt.Desktop.getDesktop().browse(java.net.URI.create(url)); 
     } 
     catch (java.io.IOException e) { 
      System.out.println(e.getMessage()); 
     } 
    } 
} 
/// End of file 
2

我知道所有这些答案已经基本回答了这个问题,但这里是一个优雅地失败的方法的代码。

注意,字符串可以是HTML文件

/** 
* If possible this method opens the default browser to the specified web page. 
* If not it notifies the user of webpage's url so that they may access it 
* manually. 
* 
* @param url 
*   - this can be in the form of a web address (http://www.mywebsite.com) 
*   or a path to an html file or SVG image file e.t.c 
*/ 
public static void openInBrowser(String url) 
{ 
    try 
     { 
      URI uri = new URL(url).toURI(); 
      Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null; 
      if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) { 
       desktop.browse(uri); 
      } else { 
       throw new Exception("Desktop not supported, cannout open browser automatically"); 
      } 
     } 
    catch (Exception e) 
     { 
      /* 
      * I know this is bad practice 
      * but we don't want to do anything clever for a specific error 
      */ 
      e.printStackTrace(); 

      // Copy URL to the clipboard so the user can paste it into their browser 
      StringSelection stringSelection = new StringSelection(url); 
      Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); 
      clpbrd.setContents(stringSelection, null); 
      // Notify the user of the failure 
      WindowTools.informationWindow("This program just tried to open a webpage." + "\n" 
       + "The URL has been copied to your clipboard, simply paste into your browser to access.", 
        "Webpage: " + url); 
     } 
}