2012-06-10 3 views
86

Come posso aprire un link in browser predefinito con un clic del pulsante, lungo le linee diApre un collegamento nel browser con il pulsante java?

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

?

+2

Potreste aver provato a guardare le [JavaDocs per la classe] (http://docs.oracle.com/javase/7/docs/ api/java/awt/Desktop.html) che viene utilizzato nella risposta accettata della tua [ultima domanda] (http://stackoverflow.com/questions/10966999/how-to-make-a-button-that-when- cliccato-apre-il-AppData-directory)! Quei documenti. sono molto utili, o allegarli al tuo IDE o aggiungere un segnalibro alla versione on-line. –

+0

Domanda duplicata: http://stackoverflow.com/q/5226212/873282 – koppor

+1

Possibile duplicato di [Ottenere java gui per aprire una pagina Web nel browser Web] (http://stackoverflow.com/questions/602032/getting-java- gui-to-open-a-webpage-in-web-browser) – Suma

risposta

204

Utilizzare il metodo Desktop#browse(URI). Apre un URI nel browser predefinito dell'utente.

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

questo non sembra funzionare in file JAR creati da Netbeans 7.x. Funziona quando il codice viene eseguito da Netbeans, ma non quando viene distribuito come file JAR ... almeno nella mia esperienza. Sto ancora cercando una soluzione. – MountainX

+0

@MountainX Eseguire il debug e verificare che il desktop sia supportato e che le implementazioni di sicurezza non impediscano l'accesso all'istanza desktop. Se si esegue il JAR come applet, la sicurezza è il probabile colpevole. – Vulcan

+0

@ Vulcan: non eseguo il JAR come applet. Non sono a conoscenza di alcuna impostazione di sicurezza che impedisca il corretto funzionamento. L'ho "aggirato" chiamando 'new ProcessBuilder (" x-www-browser ", uri.toString());'. Si penserebbe che se ci fossero restrizioni di sicurezza, la chiamata ProcessBuilder non funzionerebbe. Ma funziona. Non ho idea del perché 'desktop.browse (uri)' non funzioni, ma ho visto che non funziona per molte persone. Forse supponevo che fosse un problema di Netbeans, ma non lo so. – 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: devi includere le importazioni necessarie da 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); 
     } 
    }