Adds a hand cursor to the component, as well as a click listener that triggers a browse action to the given url. - Java Swing

Java examples for Swing:JComponent

Description

Adds a hand cursor to the component, as well as a click listener that triggers a browse action to the given url.

Demo Code


//package com.java2s;

import java.awt.Component;

import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.Desktop.Action;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.SwingUtilities;

public class Main {
    /**//  w  w w  .  j  a v a 2s . c  o m
     * Adds a hand cursor to the component, as well as a click listener that
     * triggers a browse action to the given url.
     */
    public static void addBrowseBehavior(final Component cmp,
            final String url) {
        if (url == null) {
            return;
        }
        cmp.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        cmp.addMouseListener(new MouseAdapter() {

            @Override
            public void mousePressed(MouseEvent e) {
                JFrame frame = getJFrame(cmp);
                browse(url, frame);
            }
        });
    }

    /**
     * Gets the parent JFrame of the component.
     */
    public static JFrame getJFrame(Component cmp) {
        return (JFrame) SwingUtilities.getWindowAncestor(cmp);
    }

    /**
     * Opens the given website in the default browser, or shows a message saying
     * that no default browser could be accessed.
     */
    public static void browse(String url, Component msgParent) {
        boolean error = false;

        if (Desktop.isDesktopSupported()
                && Desktop.getDesktop().isSupported(Action.BROWSE)) {
            try {
                Desktop.getDesktop().browse(new URI(url));
            } catch (URISyntaxException ex) {
                throw new RuntimeException(ex);
            } catch (IOException ex) {
                error = true;
            }
        } else {
            error = true;
        }

        if (error) {
            String msg = "Impossible to open the default browser from the application.\nSorry.";
            JOptionPane.showMessageDialog(msgParent, msg);
        }
    }
}

Related Tutorials