import javax.swing.*; 
import javax.swing.event.HyperlinkEvent; 
import javax.swing.event.HyperlinkListener; 
import javax.swing.text.html.HTMLEditorKit; 
import java.awt.*; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import java.awt.event.MouseMotionListener; 

public class HyperlinkListenerExample { 

  private HyperlinkListenerExample() { 
  } 

  private JPanel createPanel() { 
    JPanel panel = new JPanel(new BorderLayout()); 
    panel.add(Box.createVerticalStrut(100), BorderLayout.NORTH); 
    JEditorPane pane = createPane(); 
    pane.setText("<html><body>Move mouse over the <a href='my-link'>link</a> horizontally, then vertically</body></html>"); 
    panel.add(pane, BorderLayout.CENTER); 
    panel.add(Box.createVerticalStrut(100), BorderLayout.SOUTH); 
    return panel; 
  } 

  private static JEditorPane createPane() { 
    JEditorPane textPane = new JEditorPane(); 
    textPane.setEditorKit(new HTMLEditorKit()); 
    textPane.setEditable(false); 
    textPane.setOpaque(false); 
    textPane.setFocusable(false); 
    textPane.setBorder(null); 
    textPane.addHyperlinkListener(new HyperlinkListener() { 
      @Override 
      public void hyperlinkUpdate(HyperlinkEvent e) { 
        System.out.println("hyperlinkUpdate for url: " + e.getDescription() + ", eventType: " + e.getEventType()); 
      } 
    }); 
    return textPane; 
  } 

  private static void createAndShowGUI() { 
    JFrame frame = new JFrame("HyperlinkListenerExample"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    frame.add(new HyperlinkListenerExample().createPanel()); 

    frame.pack(); 
    frame.setVisible(true); 
    frame.setLocationRelativeTo(null); 
  } 

  public static void main(String[] args) { 
    SwingUtilities.invokeLater(HyperlinkListenerExample::createAndShowGUI); 
  } 
} 