1 package org.columba.core.gui.util; 17 18 import java.awt.Color ; 19 import java.awt.Cursor ; 20 import java.awt.Graphics ; 21 import java.awt.Rectangle ; 22 import java.awt.event.MouseEvent ; 23 import java.awt.event.MouseListener ; 24 import java.net.URL ; 25 26 import javax.swing.JLabel ; 27 import javax.swing.JPopupMenu ; 28 29 30 31 public class URLLabel extends JLabel implements MouseListener { 32 private JPopupMenu popup; 33 boolean entered = false; 34 boolean mousehover; 35 36 public URLLabel(URL url) { 37 this(url, url.toString()); 38 } 39 40 public URLLabel(URL url, String str) { 41 super(str); 42 43 addMouseListener(this); 44 setForeground(Color.blue); 45 mousehover = false; 46 47 URLController controller = new URLController(); 48 controller.setLink(url); 49 popup = controller.createLinkMenu(); 50 } 51 52 public void mouseClicked(MouseEvent e) { 53 popup.show(e.getComponent(), e.getX(), e.getY()); 54 } 55 56 public void mouseEntered(MouseEvent e) { 57 setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); 58 entered = true; 59 60 if (mousehover) { 61 repaint(); 62 } 63 } 64 65 public void mouseExited(MouseEvent e) { 66 setCursor(Cursor.getDefaultCursor()); 67 entered = false; 68 69 if (mousehover) { 70 repaint(); 71 } 72 } 73 74 public void mousePressed(MouseEvent e) { 75 } 76 77 public void mouseReleased(MouseEvent e) { 78 } 79 80 public void paint(Graphics g) { 81 super.paint(g); 82 83 if (entered || !mousehover) { 84 Rectangle r = g.getClipBounds(); 85 86 g.drawLine(0, 87 r.height - this.getFontMetrics(this.getFont()).getDescent(), 88 this.getFontMetrics(this.getFont()).stringWidth(this.getText()), 89 r.height - this.getFontMetrics(this.getFont()).getDescent()); 90 } 91 } 92 } 93 | Popular Tags |