import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.MouseEvent;
/**
* <p>Überschrift: JLinkLabel</p>
* <p>Beschreibung: Ein anklickbares Label</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Organisation: none</p>
* @author Tobias Viehweger
* @version 1.0
*/
public class JLinkLabel
extends JLabel
implements MouseListener {
private LinkLabelListener listener;
private String text;
private boolean underline;
/**
* Leerer Konstruktor
*/
public JLinkLabel() {
setText("");
addMouseListener(this);
this.text = text;
underlineOnMouseOver(false);
setHandCursor(false);
}
/**
*
* Konstruktor
*
* @param text Beschriftung des Labels
*/
public JLinkLabel(String text) {
setText(text);
addMouseListener(this);
this.text = text;
underlineOnMouseOver(true);
setHandCursor(true);
}
/**
*
* Konstruktor
*
* @param text Beschriftung des Labels
* @param underline true wenn bei Überfahren mit der Maus das Label
* unterstrichen werden soll
*
*/
public JLinkLabel(String text, boolean underline) {
setText(text);
addMouseListener(this);
this.text = text;
underlineOnMouseOver(underline);
setHandCursor(true);
}
/**
*
* Konstruktor
*
* @param text Beschriftung des Labels
* @param underline true, wenn bei Überfahren mit der Maus das Label
* unterstrichen werden soll
*
* @param handCursor true, wenn bei Überfahren mit der Maus der Cursor
* geändert werden soll
*/
public JLinkLabel(String text, boolean underline, boolean handCursor) {
setText(text);
addMouseListener(this);
this.text = text;
underlineOnMouseOver(underline);
setHandCursor(handCursor);
}
/**
*
* Fügt dem Label einen Listener hinzu, damit auf Ereignisse reagiert
* werden kann
*
* @param linkLabelListener Ein LinkLabelListener
*/
public void addLinkLabelListener(LinkLabelListener linkLabelListener) {
listener = linkLabelListener;
}
public void mouseClicked(MouseEvent mouseEvent) {
if (mouseEvent.getSource().equals(this) && listener != null) {
listener.clickedLabel(mouseEvent);
}
}
public void mouseEntered(MouseEvent mouseEvent) {
if (mouseEvent.getSource().equals(this)) {
if (underline) {
setText("<html><u>" + text + "</u></html>");
}
}
}
public void mouseExited(MouseEvent mouseEvent) {
if (mouseEvent.getSource().equals(this)) {
setText("<html>" + text + "</html>");
}
}
/**
*
* Setzt, ob sich der Cursor bei Überfahren mit der Maus ändert
*
* @param state true, wenn der Cursor eine Hand werden soll
*/
public void setHandCursor (boolean state) {
if (state) {
setCursor(new Cursor(Cursor.HAND_CURSOR));
}else {
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
}
/**
*
* Setzt, ob das Label bei Überfahren mit der Maus unterstrichen werden
* soll
*
* @param state true, wenn es unterstrichen werden soll
*/
public void underlineOnMouseOver (boolean state) {
underline = state;
}
public void mousePressed(MouseEvent mouseEvent) {
}
public void mouseReleased(MouseEvent mouseEvent) {
}
}