104 votes

Ouvrir un lien dans le navigateur avec un bouton java ?

Comment puis-je ouvrir un lien dans le navigateur par défaut avec un clic sur un bouton, du type

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

?

3 votes

Vous avez peut-être essayé de regarder le JavaDocs pour la classe qui est utilisé dans la réponse acceptée de votre dernière question ! Ces documents sont très pratiques, vous pouvez les joindre à votre IDE ou ajouter la version en ligne à vos favoris.

0 votes

Question dupliquée : stackoverflow.com/q/5226212/873282

227voto

Vulcan Points 14343

Utilisez le Desktop#browse(URI) méthode. Elle ouvre un URI dans le navigateur par défaut de l'utilisateur.

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 votes

Cela ne semble pas fonctionner dans les fichiers JAR créés par Netbeans 7.x. Cela fonctionne lorsque le code est exécuté à partir de Netbeans, mais pas lorsqu'il est déployé en tant que fichier JAR... du moins d'après mon expérience. Je suis toujours à la recherche d'une solution.

0 votes

@MountainX Déboguez et vérifiez que le bureau est pris en charge et que les implémentations de sécurité ne vous empêchent pas d'accéder à l'instance du bureau. Si vous exécutez le JAR en tant qu'applet, la sécurité est probablement en cause.

0 votes

@Vulcan--Je n'exécute pas le JAR comme une applet. Je n'ai pas connaissance de paramètres de sécurité qui empêcheraient cette opération de fonctionner. J'ai "contourné" le problème en appelant new ProcessBuilder("x-www-browser", uri.toString()); . On pourrait penser qu'en cas de restrictions de sécurité, l'appel ProcessBuilder ne fonctionnerait pas. Mais il fonctionne. Je n'ai aucune idée de la raison pour laquelle desktop.browse(uri) ne fonctionne pas, mais j'ai vu que ça ne fonctionne pas pour beaucoup de gens. Je pensais que c'était peut-être un problème lié à Netbeans, mais je ne sais pas.

37voto

Daniel Points 71
public static void openWebpage(String urlString) {
    try {
        Desktop.getDesktop().browse(new URL(urlString).toURI());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

25voto

AdelM Points 56
try {
    Desktop.getDesktop().browse(new URL("http://www.google.com").toURI());
} catch (Exception e) {}

note : vous devez inclure les importations nécessaires de java.net

5voto

koppor Points 2066

Une solution sans l'environnement de bureau est BrowserLauncher2 . Cette solution est plus générale car sous Linux, Desktop n'est pas toujours disponible.

La longue réponse est publiée à l'adresse suivante https://stackoverflow.com/a/21676290/873282

4voto

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());
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X