import java.awt.Color; import java.awt.Cursor; import java.awt.Graphics; import java.awt.Insets; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JLabel; public class JHyperlinkLabel extends JLabel { private Color underlineColor = null; public JHyperlinkLabel(String label) { super(label); setForeground(Color.BLUE.darker()); setCursor(new Cursor(Cursor.HAND_CURSOR)); addMouseListener(new HyperlinkLabelMouseAdapter()); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(underlineColor == null ? getForeground() : underlineColor); Insets insets = getInsets(); int left = insets.left; if (getIcon() != null) left += getIcon().getIconWidth() + getIconTextGap(); g.drawLine(left, getHeight() - 1 - insets.bottom, (int) getPreferredSize().getWidth() - insets.right, getHeight() - 1 - insets.bottom); } public class HyperlinkLabelMouseAdapter extends MouseAdapter { @Override public void mouseClicked(MouseEvent e) { System.out.println(getText()); } } public Color getUnderlineColor() { return underlineColor; } public void setUnderlineColor(Color underlineColor) { this.underlineColor = underlineColor; } }