1 19 20 28 29 package org.netbeans.modules.xml.schema.abe; 30 31 import java.awt.Color ; 32 import java.awt.Cursor ; 33 import java.awt.Font ; 34 import java.awt.Graphics ; 35 import java.awt.Rectangle ; 36 import java.awt.event.MouseEvent ; 37 import java.awt.event.MouseListener ; 38 import javax.swing.JLabel ; 39 40 44 public class HyperlinkLabel extends JLabel { 45 private static final long serialVersionUID = -483941387931729295L; 46 47 public HyperlinkLabel() { 48 super(); 49 initialize(); 50 } 51 52 private void initialize(){ 53 initMouseListener(); 54 } 55 56 boolean mouseIn = false; 57 private void initMouseListener() { 58 addMouseListener(new MouseListener () { 59 public void mouseClicked(MouseEvent e) { 60 if(hyperlinkClickHandler != null) 61 hyperlinkClickHandler.handleClick(); 62 } 63 public void mouseEntered(MouseEvent e) { 64 if(hyperlinkClickHandler != null){ 65 mouseIn = true; 66 HyperlinkLabel.this.setCursor(new Cursor (Cursor.HAND_CURSOR)); 67 repaint(); 68 } 69 } 70 public void mouseExited(MouseEvent e) { 71 if(hyperlinkClickHandler != null){ 72 mouseIn = false; 73 HyperlinkLabel.this.setCursor(new Cursor (Cursor.DEFAULT_CURSOR)); 74 repaint(); 75 } 76 } 77 public void mousePressed(MouseEvent e) { 78 } 79 public void mouseReleased(MouseEvent e) { 80 } 81 }); 82 } 83 84 protected void paintComponent(Graphics g) { 85 if(mouseIn){ 86 Color origC = getForeground(); 88 Font origF = getFont(); 89 Rectangle bounds = g.getClipBounds(); 90 Color bak = getForeground(); 91 setForeground(Color.BLUE); 92 Color gbak = g.getColor(); 93 g.setColor(Color.blue); 94 super.paintComponent(g); 95 int width = bounds.width; 96 g.drawLine(bounds.x+5, bounds.y + bounds.height -1, 97 bounds.x+5 + width - 5, bounds.y + bounds.height -1); 98 setForeground(bak); 99 g.setColor(gbak); 100 }else{ 101 super.paintComponent(g); 102 } 103 } 104 105 106 HyperlinkClickHandler hyperlinkClickHandler; 107 public void setHyperlinkClickHandler(HyperlinkClickHandler hyperlinkClickHandler){ 108 this.hyperlinkClickHandler = hyperlinkClickHandler; 109 110 } 111 112 public interface HyperlinkClickHandler{ 113 public void handleClick(); 114 } 115 116 } 117 | Popular Tags |