2012-06-10 16 views
86

¿Cómo puedo abrir un enlace en el navegador por defecto con un clic de botón, a lo largo de las líneas deAbra un enlace en el navegador con el botón java?

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

?

+2

Es posible que haya intentado mirar las [JavaDocs para la clase] (http://docs.oracle.com/javase/7/docs/ api/java/awt/Desktop.html) que se usa en la respuesta aceptada de su [última pregunta] (http://stackoverflow.com/questions/10966999/how-to-make-a-button-that-when- clicked-opens-the-appdata-directory)! Esos documentos. son muy útiles, ya sea que los adjunte IDE o marque la versión en línea. –

+0

Pregunta duplicada: http://stackoverflow.com/q/5226212/873282 – koppor

+1

Posible duplicado de [Cómo obtener Java Gui para abrir una página web en el navegador web] (http://stackoverflow.com/questions/602032/getting-java- gui-to-open-a-webpage-in-web-browser) – Suma

Respuesta

204

Utilice el método Desktop#browse(URI). Abre un URI en el navegador predeterminado del usuario.

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; 
} 
+0

esto no parece funcionar en archivos JAR creados por Netbeans 7.x. Funciona cuando el código se ejecuta desde Netbeans, pero no cuando se implementa como un archivo JAR ... al menos en mi experiencia. Todavía estoy buscando una solución. – MountainX

+0

@MountainX Depure y verifique que el escritorio sea compatible y que las implementaciones de seguridad no le restrinjan el acceso a la instancia de escritorio. Si está ejecutando el JAR como un applet, la seguridad es probablemente el culpable. – Vulcan

+0

@ Vulcan - No estoy ejecutando el JAR como un applet. No conozco ninguna configuración de seguridad que impida que esto funcione. "Lo resolví" llamando a 'new ProcessBuilder (" x-www-browser ", uri.toString());'. Usted pensaría que si hubiera restricciones de seguridad, la llamada ProcessBuilder no funcionaría. Pero funciona No tengo idea de por qué 'desktop.browse (uri)' no funciona, pero he visto que no funciona para mucha gente. Supongo que tal vez sea un problema de Netbeans, pero no sé. – MountainX

29
public static void openWebpage(String urlString) { 
    try { 
     Desktop.getDesktop().browse(new URL(urlString).toURI()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
22
try { 
    Desktop.getDesktop().browse(new URL("http://www.google.com").toURI()); 
} catch (Exception e) {} 

nota: usted tiene que incluir las importaciones necesarias de java.net

2
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()); 
     } 
    }  
0
public static void openWebPage(String url) { 
     try { 
      Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null; 
      if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) { 
       desktop.browse(new URI(url)); 
      } 
      throw new NullPointerException(); 
     } catch (Exception e) { 
      JOptionPane.showMessageDialog(null, url, "", JOptionPane.PLAIN_MESSAGE); 
     } 
    } 
Cuestiones relacionadas