Swing Components Java

//package com.towel.swing;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.AbstractButton;
import javax.swing.UIManager;
public class ButtonLabel extends AbstractButton {
  private String text;
  private int height;
  public ButtonLabel(String text) {
    setText(text);
    addMouseListener(new MouseClick());
  }
  @Override
  public void paintComponent(Graphics g) {
    try {
      Graphics2D g2d = (Graphics2D) g.create();
      g2d.setFont(UIManager.getFont("TitledBorder.font"));
      g2d.setColor(getColor());
      g2d.drawString(text, 0, (height + 6) / 2);
      g2d.dispose();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  public String getText() {
    return text;
  }
  public void setText(String text) {
    this.text = text;
    updateSize();
  }
  private void updateSize() {
    FontMetrics metrics = getFontMetrics(UIManager
        .getFont("TitledBorder.font"));
    height = metrics.getHeight();
    setPreferredSize(new Dimension(metrics.stringWidth(getText()), height));
  }
  private class MouseClick extends MouseAdapter {
    @Override
    public void mouseClicked(MouseEvent evnt) {
      for (ActionListener listener : getActionListeners())
        listener.actionPerformed(new ActionEvent(ButtonLabel.this, 0,
            ""));
    }
    @Override
    public void mouseEntered(MouseEvent evnt) {
      if (getActionListeners().length == 0)
        return;
      setCursor(new Cursor(Cursor.HAND_CURSOR));
    }
    @Override
    public void mouseExited(MouseEvent evnt) {
      setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
    }
  }
  private Color getColor() {
    return UIManager.getColor("TitledBorder.titleColor");
  }
}