【问题标题】:Getting java gui to open a webpage in web browser让java gui在网络浏览器中打开网页
【发布时间】:2010-10-10 18:19:31
【问题描述】:

我正在尝试获取一个 java gui 来打开一个网页。所以 gui 运行一些代码,然后生成一个 html 文件。 然后,我希望该文件在创建后立即在 Web 浏览器(最好是 Firefox)中打开。 我该怎么做呢?

【问题讨论】:

    标签: java html user-interface


    【解决方案1】:

    如果您使用的是 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);
    

    【讨论】:

    • 嘿。仍然无法让它工作。我收到以下错误:“错误消息:系统找不到指定的路径。”即使我已经给了它确切的路径。
    • @TheSpecialOne - 您是否提供文件的 本地 路径?例如:在 windows 框中,htmlFilePath 看起来像“c:\path\to\file.html”。不要使用 URL 语法...
    【解决方案2】:

    是的,但是如果您想通过 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
    

    【讨论】:

      【解决方案3】:

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

      注意字符串可以是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);
              }
      }
      

      【讨论】:

        【解决方案4】:

        我已经成功使用了BrowserLauncher2。它将在所有测试的平台上调用默认浏览器。我用它来通过 JNLP 演示软件。该软件下载、运行并将用户的浏览器驱动到信息页面/反馈等。

        JDK 1.4 及更高版本,我相信。

        【讨论】:

        • 如果页面的 URL 因用户活动而更改,是否可以使用 BrowserLauncher2 获取该新 URL?
        猜你喜欢
        • 1970-01-01
        • 2013-02-06
        • 2021-01-21
        • 1970-01-01
        • 1970-01-01
        • 2017-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多