URLLabel.java Source code

Java tutorial

Introduction

Here is the source code for URLLabel.java

Source

//The contents of this file are subject to the Mozilla Public License Version 1.1
//(the "License"); you may not use this file except in compliance with the 
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
//
//Software distributed under the License is distributed on an "AS IS" basis,
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
//for the specific language governing rights and
//limitations under the License.
//
//The Original Code is "The Columba Project"
//
//The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003. 
//
//All Rights Reserved.

import java.awt.Color;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.net.URL;

import javax.swing.JLabel;

public class URLLabel extends JLabel {

    boolean entered = false;

    boolean mousehover;

    public URLLabel(URL url) {
        this(url, url.toString());
    }

    public URLLabel(URL url, String str) {
        super(str);

        setForeground(Color.blue);
        mousehover = false;

    }

    public void mouseEntered(MouseEvent e) {
        setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        entered = true;

        if (mousehover) {
            repaint();
        }
    }

    public void mouseExited(MouseEvent e) {
        setCursor(Cursor.getDefaultCursor());
        entered = false;

        if (mousehover) {
            repaint();
        }
    }

    public void mousePressed(MouseEvent e) {
    }

    public void mouseReleased(MouseEvent e) {
    }

    public void paint(Graphics g) {
        super.paint(g);

        if (entered || !mousehover) {
            Rectangle r = g.getClipBounds();

            g.drawLine(0, r.height - this.getFontMetrics(this.getFont()).getDescent(),
                    this.getFontMetrics(this.getFont()).stringWidth(this.getText()),
                    r.height - this.getFontMetrics(this.getFont()).getDescent());
        }
    }
}