2012-06-10 15 views
86

にはどうすればブラウザでJavaボタンでリンクを開きますか?

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

の線に沿って、ボタンをクリックするだけで、デフォルトのブラウザでリンクを開くことができますか?

+2

に掲載されますapi/java/awt/Desktop.html)は、あなたの[最後の質問]の受け入れられた答えで使用されています(http://stackoverflow.com/questions/10966999/how-to-make-a-button-that-when- clicked-opens-the-appdata-directory)をクリックしてください。それらのドキュメント非常に便利です、どちらかをIDEに接続するか、オンラインバージョンをブックマークしてください。 –

+0

重複した質問:http://stackoverflow.com/q/5226212/873282 – koppor

+1

[WebブラウザでWebページを開くためのjava guiの取得]の可能な複製](http://stackoverflow.com/questions/602032/getting-java- Webブラウザでgui-to-open-a-web-browser) – Suma

答えて

204

Desktop#browse(URI)メソッドを使用します。ユーザーのデフォルトブラウザにURIを開きます。

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

これは、Netbeans 7.xで作成されたJARファイルでは動作しません。これは、コードがNetbeansから実行されたときには動作しますが、少なくともJARファイルとしてデプロイされたときは動作しません。私はまだ解決策を探しています。 – MountainX

+0

@MountainXデバッグし、デスクトップがサポートされていること、およびセキュリティ実装がデスクトップインスタンスにアクセスすることを制限していないことを確認します。 JARをアプレットとして実行している場合、セキュリティが原因である可能性があります。 – Vulcan

+0

@ Vulcan - JARをアプレットとして実行していません。私はこれが動作しないようにするセキュリティ設定について認識していません。私は ''新しいProcessBuilder( "x-www-browser"、uri.toString());を呼び出すことによって "それを回避"しました。セキュリティの制限があると、ProcessBuilderの呼び出しは機能しません。しかし、それは動作します。 'desktop.browse(uri)'がうまくいかない理由はわかりませんが、私は多くの人にとってうまくいきません。私はそれがNetbeansの問題かもしれないと推測していましたが、わかりません。 – 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) {} 

注:あなたは、デスクトップ環境のないソリューションがBrowserLauncher2あるjava.net

4

から必要な輸入品を含める必要があります。この解決策はLinuxの場合と同じように一般的ですが、デスクトップが常に利用できるとは限りません。

長ったらしい答えは、あなたが、[クラスのjavadoc](http://docs.oracle.com/javase/7/docs/を見てみましたかもしれないhttps://stackoverflow.com/a/21676290/873282

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); 
     } 
    } 
関連する問題