当前位置: 技术问答>java相关
请教:java的application里如何做超链接的效果?
来源: 互联网 发布时间:2015-09-16
本文导语: 我有一个JTextArea,我想把里面的一部分String做成超链接的形式(可以设置颜色,鼠标移到上面会变成手的形状,点击会新开窗口),我该如何做? 请各位高手指教. | import java.awt.*; import java.awt.event.*; public cl...
我有一个JTextArea,我想把里面的一部分String做成超链接的形式(可以设置颜色,鼠标移到上面会变成手的形状,点击会新开窗口),我该如何做?
请各位高手指教.
请各位高手指教.
|
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);
}
}
|
hehe,来领分的,多多努力。
|
我觉得你应该自己去实现一个Document,并且为它加一个DocumentListener判断输入是否为你标记的String,并更新它的颜色,确定光标的显示。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。