Ti posto la classe che ho scritto tempo fa. Questa classe controlla il sistema operativo in uso e in base ad esso apre il browser predefinito a seconda del sistema operativo. Basta che nella actionPerformed del pulsante richiami il metodo displayURL passandogli l'url da aprire:
codice:
import java.io.IOException;
public class BrowserControl{
// Indentifica WINDOWS.
private static final String WIN_ID = "Windows";
// Il browser predefinito sotto WINDOWS
private static final String WIN_PATH = "rundll32";
// Flag per mostrare l'url
private static final String WIN_FLAG = "url.dll,FileProtocolHandler";
// Il broswer di default per UNIX
private static final String UNIX_PATH = "netscape";
// Flag per mostrare l'url
private static final String UNIX_FLAG = "-remote openURL";
public static void displayURL(String url){
boolean windows = isWindowsPlatform();
String cmd = null;
try{
if (windows){
// Il comando da lanciare è cmd = 'rundll32 url.dll,FileProtocolHandler http://...'
cmd = WIN_PATH + " " + WIN_FLAG + " " + url;
Process p = Runtime.getRuntime().exec(cmd);
}else{
// Sotto UNIX, Netscape deve essere avviato col comando "-remote"
// per funzionare. Invio il comando e recupero l'exit value.
// Se questo è 0, il comando ha funzionato, altrimenti si deve avviare il browser
// Il comando da eseguire è: cmd = 'netscape -remote openURL(http://....)'
cmd = UNIX_PATH + " " + UNIX_FLAG + "(" + url + ")";
Process p = Runtime.getRuntime().exec(cmd);
try{
// attendo l'exit vaue
int exitCode = p.waitFor();
if (exitCode != 0){
// Comando fallito, avvia il browser col comando:
// cmd = 'netscape http://....'
cmd = UNIX_PATH + " " + url;
p = Runtime.getRuntime().exec(cmd);
}
}
catch(InterruptedException x){
System.err.println("Errore avviando il browser, cmd='" +
cmd + "'");
System.err.println("Eccezione: " + x);
}
}
}
catch(IOException x){
// Impossibile eseguire il browser
System.err.println("Impossibile aprire il browser, command=" + cmd);
System.err.println("Eccezione: " + x);
}
}
public static boolean isWindowsPlatform(){
String os = System.getProperty("os.name");
if ( os != null && os.startsWith(WIN_ID))
return true;
else
return false;
}
}