ब्राउज़र में जावा बटन के साथ एक लिंक खोलें? [डुप्लिकेट]


103

मैं एक बटन क्लिक के साथ डिफ़ॉल्ट ब्राउज़र में एक लिंक कैसे खोल सकता हूं, की तर्ज पर

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

?


2
आपने अपने अंतिम प्रश्न के स्वीकृत उत्तर में उपयोग की जाने वाली कक्षा के लिए JavaDocs देखने की कोशिश की होगी ! वो डॉक्स। बहुत आसान है, या तो उन्हें आप के साथ संलग्न करें या ऑन-लाइन संस्करण को बुकमार्क करें।
एंड्रयू थॉम्पसन

डुप्लीकेट प्रश्न: stackoverflow.com/q/5226212/873282
koppor

जवाबों:


223

का प्रयोग करें डेस्कटॉप # ब्राउज़ (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;
}

यह Netbeans 7.x द्वारा निर्मित JAR फ़ाइलों में काम नहीं करता है। यह तब काम करता है जब कोड नेटबीन्स से चलाया जाता है, लेकिन जब जार फ़ाइल के रूप में तैनात नहीं होता है ... तो कम से कम मेरे अनुभव में। मैं अभी भी एक समाधान के लिए देख रहा हूँ।
MountainX

@MountainX डीबग और सत्यापित करें कि डेस्कटॉप समर्थित है और यह कि सुरक्षा कार्यान्वयन आपको डेस्कटॉप उदाहरण तक पहुँचने से प्रतिबंधित नहीं कर रहा है। यदि आप JAR को एक एप्लेट के रूप में चला रहे हैं, तो सुरक्षा संभावित अपराधी है।
FThompson

@ वल्कन - मैं जार को एक एप्लेट के रूप में नहीं चला रहा हूं। मुझे ऐसी किसी भी सुरक्षा सेटिंग्स के बारे में जानकारी नहीं है जो इसे काम करने से रोकती है। मैंने कॉल करके "इसके आसपास" काम किया new ProcessBuilder("x-www-browser", uri.toString());। आपको लगता होगा कि अगर सुरक्षा प्रतिबंध होते, तो ProcessBuilder कॉल काम नहीं करती। लेकिन यह काम करता है। मुझे पता नहीं क्यों desktop.browse(uri)काम नहीं करता है, लेकिन मैंने देखा है कि यह बहुत से लोगों के लिए काम नहीं करता है। मैं अनुमान लगा रहा था कि शायद यह एक नेटबीन्स मुद्दा है, लेकिन मुझे नहीं पता।
MountainX

यदि उपयोगकर्ता ने "html" जैसी फ़ाइल के लिए एक कस्टम "ओपन विथ एक्शन" फाइल को सौंपा है, तो यह ब्राउज़र को नहीं खोलेगा, लेकिन उपयोगकर्ता ने जिस प्रोग्राम के साथ इसे जोड़ा है ... यह बिल्कुल भी समाधान नहीं है!
तेरस

@ संतक महान बिंदु; एक वैकल्पिक openWebpageउपयोग कर सकता है Runtime.exec(..)और लोकप्रिय ब्राउज़र नामों के एक पूर्व निर्धारित सेट के माध्यम से पुनरावृति कर सकता है, उन्हें URL से गुजारें। हालांकि, अस्पष्ट ब्राउज़रों वाले उपयोगकर्ताओं के लिए नहीं चलने का भी दावा है, लेकिन मैं इसे तब लिखूंगा और जल्द ही इस उत्तर को जोड़ूंगा जब मेरे पास एक निशुल्क क्षण होगा।
फीटहोमन

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

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

ध्यान दें: आपको आवश्यक आयात शामिल करना होगा java.net


5

डेस्कटॉप वातावरण के बिना एक समाधान BrowserLauncher2 है । यह समाधान लिनक्स पर अधिक सामान्य है, डेस्कटॉप हमेशा उपलब्ध नहीं होता है।

इस lenghty जवाब को https://stackoverflow.com/a/21676290/873282 पर पोस्ट किया गया है


3
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

मुझे पता है कि यह एक पुराना सवाल है, लेकिन कभी-कभी यह Desktop.getDesktop()उबुन्टु १ in.०४ में एक अप्रत्याशित दुर्घटना पैदा करता है। इसलिए, मुझे अपना कोड इस तरह दोबारा लिखना होगा:

public static void openURL(String domain)
{
    String url = "https://" + domain;
    Runtime rt = Runtime.getRuntime();
    try {
        if (MUtils.isWindows()) {
            rt.exec("rundll32 url.dll,FileProtocolHandler " + url).waitFor();
            Debug.log("Browser: " + url);
        } else if (MUtils.isMac()) {
            String[] cmd = {"open", url};
            rt.exec(cmd).waitFor();
            Debug.log("Browser: " + url);
        } else if (MUtils.isUnix()) {
            String[] cmd = {"xdg-open", url};
            rt.exec(cmd).waitFor();
            Debug.log("Browser: " + url);
        } else {
            try {
                throw new IllegalStateException();
            } catch (IllegalStateException e1) {
                MUtils.alertMessage(Lang.get("desktop.not.supported"), MainPn.getMainPn());
                e1.printStackTrace();
            }
        }
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
}

public static boolean isWindows()
{
    return OS.contains("win");
}

public static boolean isMac()
{
    return OS.contains("mac");
}

public static boolean isUnix()
{
    return OS.contains("nix") || OS.contains("nux") || OS.indexOf("aix") > 0;
}

तब हम इस सहायक को उदाहरण से कॉल कर सकते हैं:

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

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);
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.