package GUI; import java.awt.Color; import java.awt.Cursor; import java.awt.Desktop; import java.awt.Graphics; import java.awt.Insets; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JLabel; public class JHyperlinkLabel extends JLabel { private Color underlineColor = null; public JHyperlinkLabel(String label) { super(label); this.setForeground(Color.BLUE.darker()); this.setCursor(new Cursor(12)); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(this.underlineColor == null ? this.getForeground() : this.underlineColor); Insets insets = this.getInsets(); int left = insets.left; if (this.getIcon() != null) { left += this.getIcon().getIconWidth() + this.getIconTextGap(); } g.drawLine(left, this.getHeight() - 1 - insets.bottom, (int)this.getPreferredSize().getWidth() - insets.right, this.getHeight() - 1 - insets.bottom); } private static void open(URI uri) throws URISyntaxException { if (Desktop.isDesktopSupported()) { Desktop desktop = Desktop.getDesktop(); try { desktop.browse(uri); } catch (IOException var3) { } } } public Color getUnderlineColor() { return this.underlineColor; } public void setUnderlineColor(Color underlineColor) { this.underlineColor = underlineColor; } public class HyperlinkLabelMouseAdapter extends MouseAdapter { @Override public void mouseClicked(MouseEvent e) { System.out.println(JHyperlinkLabel.this.getText()); try { JHyperlinkLabel.open(new URI("http://java.sun.com")); } catch (URISyntaxException var3) { Logger.getLogger(JHyperlinkLabel.class.getName()).log(Level.SEVERE, null, var3); } } } }