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());
}
}
Related videos on Youtube
Author by
Malasuerte94
Updated on March 23, 2020Comments
-
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? } });
?
-
Andrew Thompson about 12 yearsYou might have tried looking at the JavaDocs for the class that is used in the accepted answer of your last question! Those docs. are very handy, either attach them to you IDE or bookmark the on-line version.
-
koppor about 9 yearsDuplicate question: stackoverflow.com/q/5226212/873282
-
-
MountainX over 10 yearsthis 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 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 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 whydesktop.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 about 9 yearsIf 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 about 9 years@thesaint Great point; an alternative
openWebpage
could useRuntime.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 over 4 yearsIterating 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 over 3 yearsit worked perfect! thanks