Open a link in browser with java button?

150,809

Solution 1

Use the Desktop#browse(URI) method. It opens a URI in the user's default browser.

public static boolean openWebpage(URI uri) {
    Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
    if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
        try {
            desktop.browse(uri);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return false;
}

public static boolean openWebpage(URL url) {
    try {
        return openWebpage(url.toURI());
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
    return false;
}

Solution 2

public static void openWebpage(String urlString) {
    try {
        Desktop.getDesktop().browse(new URL(urlString).toURI());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Solution 3

try {
    Desktop.getDesktop().browse(new URL("http://www.google.com").toURI());
} catch (Exception e) {}

note: you have to include necessary imports from java.net

Solution 4

A solution without the Desktop environment is BrowserLauncher2. This solution is more general as on Linux, Desktop is not always available.

The lenghty answer is posted at https://stackoverflow.com/a/21676290/873282

Solution 5

private void ButtonOpenWebActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        String url = "https://www.google.com";
        java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));
    } catch (java.io.IOException e) {
        System.out.println(e.getMessage());
    }
}
Share:
150,809

Related videos on Youtube

Malasuerte94
Author by

Malasuerte94

Updated on March 23, 2020

Comments

  • Malasuerte94
    Malasuerte94 over 4 years

    How can I open a link in default browser with a button click, along the lines of

    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            open("www.google.com"); // just what is the 'open' method?
        }
    });
    

    ?

  • MountainX
    MountainX over 10 years
    this doesn't appear to work in JAR files created by Netbeans 7.x. It works when the code is run from Netbeans, but not when deployed as a JAR file... at least in my experience. I'm still looking for a solution.
  • FThompson
    FThompson over 10 years
    @MountainX Debug and verify that the desktop is supported and that security implementations aren't restricting you from accessing the desktop instance. If you are running the JAR as an applet, security is the likely culprit.
  • MountainX
    MountainX over 10 years
    @Vulcan--I'm not running the JAR as an applet. I'm not aware of any security settings that would prevent this from working. I "worked around" it by calling new ProcessBuilder("x-www-browser", uri.toString());. You would think that if there were security restrictions, the ProcessBuilder call would not work. But it does work. I have no idea why desktop.browse(uri) doesn't work, but I have seen that it doesn't work for a lot of people. I was guessing maybe it's a Netbeans issue, but I don't know.
  • thesaint
    thesaint about 9 years
    If the user has assigned a custom "open with" action to the file exten like "html" then this will NOT open the browser, but the program the user has linked it with.... This is not a solution at all!
  • FThompson
    FThompson about 9 years
    @thesaint Great point; an alternative openWebpage could use Runtime.exec(..) and iterate through a pre-defined set of popular browser names, passing them the URL. That also has the caveat of not running for users with obscure browsers, however, but I'll write and add it to this answer soon when I have a free moment.
  • Jason
    Jason over 4 years
    Iterating over a pre-defined set of popular browsers will also not yield a desirable result for some users. They may have a default browser of Internet Explorer and our hypothetical program may place Chrome before IE in the list of browsers. The user may even have IE open and then wonder why Chrome is being used and not their default browser, IE.
  • wilmerlpr
    wilmerlpr over 3 years
    it worked perfect! thanks