import java.awt.*;
import java.awt.event.*;public class UrlLabel extends Label implements MouseListener // 监听鼠标动作
{
boolean drawLine = false; // 是否画线标志
public UrlLabel() // 如果参数为空,调用另一个构造器
{
this("");
} public UrlLabel(String text) // 构造UrlLabel类
{
super(text); // 调用父类的构造器
addMouseListener(this); // 增加鼠标监听器
} public void paint(Graphics g)
{
Rectangle r;
super.paint(g); // 由父类先处理显示文本
if(drawLine) // 如果是画线状态(说明鼠标在上方)
{
r = g.getClipBounds(); // 取字体边框范围
g.drawLine(0, r.height - this.getFontMetrics(this.getFont()).getDescent(),
this.getFontMetrics(this.getFont()).stringWidth(this.getText()),
r.height - this.getFontMetrics(this.getFont()).getDescent()); //在最下边画线
}
} public void mouseEntered(MouseEvent e) // 鼠标进入事件
{
drawLine = true; // 允许画线
repaint();
} public void mouseExited(MouseEvent e) //鼠标离开事件
{
drawLine = false; // 放弃画线
repaint();
}
public void mouseReleased(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
public void mousePressed(MouseEvent e){} public void destory()
{
removeMouseListener(this); // 去掉监听
}
}
==========================================
测试程序代码:UrlLabelText .java
------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.applet.*;public class UrlLabelText extends Applet
{
public void init()
{
UrlLabel urlLabel = new UrlLabel("UrlLabelText");
add(urlLabel);
}
}
import java.awt.event.*;public class UrlLabel extends Label implements MouseListener // 监听鼠标动作
{
boolean drawLine = false; // 是否画线标志
public UrlLabel() // 如果参数为空,调用另一个构造器
{
this("");
} public UrlLabel(String text) // 构造UrlLabel类
{
super(text); // 调用父类的构造器
addMouseListener(this); // 增加鼠标监听器
} public void paint(Graphics g)
{
Rectangle r;
super.paint(g); // 由父类先处理显示文本
if(drawLine) // 如果是画线状态(说明鼠标在上方)
{
r = g.getClipBounds(); // 取字体边框范围
g.drawLine(0, r.height - this.getFontMetrics(this.getFont()).getDescent(),
this.getFontMetrics(this.getFont()).stringWidth(this.getText()),
r.height - this.getFontMetrics(this.getFont()).getDescent()); //在最下边画线
}
} public void mouseEntered(MouseEvent e) // 鼠标进入事件
{
drawLine = true; // 允许画线
repaint();
} public void mouseExited(MouseEvent e) //鼠标离开事件
{
drawLine = false; // 放弃画线
repaint();
}
public void mouseReleased(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
public void mousePressed(MouseEvent e){} public void destory()
{
removeMouseListener(this); // 去掉监听
}
}
==========================================
测试程序代码:UrlLabelText .java
------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.applet.*;public class UrlLabelText extends Applet
{
public void init()
{
UrlLabel urlLabel = new UrlLabel("UrlLabelText");
add(urlLabel);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货