当前位置: 技术问答>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,并更新它的颜色,确定光标的显示。