可能很多人不知道,Swing其实可以添加html代码的,利用这个特性,我们可以用Label做很多奇特效果,例如可以做一个带超链接的label
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import javax.swing.JLabel;
/**
*
* 超链接文本标签类
* @author liuxing
*
*/
public class LinkLabel extends JLabel {
private static final long serialVersionUID = 1L;
/** 超链接显示的文字 */
private String text;
/** 保存连接 */
private URL link = null;
/** 保存标签的默认颜色 */
private Color preColor = null;
/** * 构造一个超链接 * @param vText 显示的文字 * @param vLink 连接地址 */
public LinkLabel(String vText, String vLink) {
super("<html>" + vText + "</html>");
this.text = vText;
try {
if (!vLink.startsWith("http://"))
vLink = "http://" + vLink;
this.link = new URL(vLink);
} catch (MalformedURLException err) {
err.printStackTrace();
}
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e) {
LinkLabel.this.setCursor(Cursor
.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
if (preColor != null)
LinkLabel.this.setForeground(preColor);
LinkLabel.this.setText("<html>" + text + "</html>");
}
@Override
public void mouseEntered(MouseEvent e) {
LinkLabel.this.setCursor(Cursor
.getPredefinedCursor(Cursor.HAND_CURSOR));
preColor = LinkLabel.this.getForeground();
LinkLabel.this.setForeground(Color.BLUE);
LinkLabel.this.setText("<html><u>" + text + "</u></html>");
}
@Override
public void mouseClicked(MouseEvent e) {
try {
Desktop.getDesktop().browse(link.toURI());
} catch (IOException err) {
err.printStackTrace();
} catch (URISyntaxException err) {
err.printStackTrace();
}
}
});
}
}
上面的这个类在实例化的时候传入显示值和链接即可用。
public LinkLabel(String vText, String vLink) {
...
}
我们可以看到,这个类添加了3个鼠标事件。鼠标移入事件、鼠标移除事件、鼠标点击事件:
鼠标移入事件:
@Override
public void mouseEntered(MouseEvent e) {
LinkLabel.this.setCursor(Cursor
.getPredefinedCursor(Cursor.HAND_CURSOR));
preColor = LinkLabel.this.getForeground();
LinkLabel.this.setForeground(Color.BLUE);
LinkLabel.this.setText("<html><u>" + text + "</u></html>");
}
鼠标移入时,把光标设置成手状,把文字颜色设置为蓝色,然后文字添加下划线。
鼠标移出事件:
@Override
public void mouseExited(MouseEvent e) {
LinkLabel.this.setCursor(Cursor
.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
if (preColor != null)
LinkLabel.this.setForeground(preColor);
LinkLabel.this.setText("<html>" + text + "</html>");
}
光标形状还原,颜色还原,文字下划线取消。
鼠标单击事件:
@Override
public void mouseClicked(MouseEvent e) {
try {
Desktop.getDesktop().browse(link.toURI());
} catch (IOException err) {
err.printStackTrace();
} catch (URISyntaxException err) {
err.printStackTrace();
}
}
直接调用系统提供的api,打开默认浏览器打开网站。
这就是超链接label的简单实现。
最后介绍个学习网站:
http://gz.itcast.cn/
分享到:
相关推荐
Java在Swing窗口上实现文字超链接,也就是一个普通的超文本链接功能,主要是使用java.lang 包中的Runtime 类可以实现标签的Web 链接功能。
JAVA中Jtable标签设置超级链接:基于Java Swing的超链接标签和超链接按钮的实现,让你跟好的认识
Swing版的简单计算器,实现加减乘除,第一次写,希望大家给点建议。
java swing 实现的带启动界面的简易截图软件,启动界面有进度条,可保存可粘贴到qq微信,简单实用
基于JavaSwing图书管理系统设计与实现.doc 基于JavaSwing图书管理系统设计与实现.doc 基于JavaSwing图书管理系统设计与实现.doc 基于JavaSwing图书管理系统设计与实现.doc 基于JavaSwing图书管理系统设计与实现.doc ...
NULL 博文链接:https://lazycat774880994.iteye.com/blog/567412
本项目是一套java Swing mysql实现简单的购物系统,主要针对计算机相关专业需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、运行指导视频。 项目都经过严格调试,确保可以运行! 二、技术实现 后端:...
利用JavaSwing实现简单的计算器,输入计算表达式得出结果,支持左右括号,负数以及小数。简单处理表达式不正确的情况,并且负数需打上括号。
实现了音乐列表、播放、暂停、上下歌曲切换等音乐播放器基本功能。利用到JavaSwing、多线程、音乐控制等多个知识点。且代码注释详细。欢迎下载~有问题可以私信我噢 ^_^
Java Swing实现的生命游戏Java Swing实现的生命游戏Java Swing实现的生命游戏 Java Swing实现的生命游戏Java Swing实现的生命游戏Java Swing实现的生命游戏 Java Swing实现的生命游戏Java Swing实现的生命游戏Java ...
用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing...
swing+socket的QQ简单通信,实现了简单的socket通信,添加查找好友,QQ对聊等功能.
使用Java中的Swing技术实现一个简单的计算器.pdf使用Java中的Swing技术实现一个简单的计算器.pdf使用Java中的Swing技术实现一个简单的计算器.pdf使用Java中的Swing技术实现一个简单的计算器.pdf使用Java中的Swing...
主要介绍了基于Java swing组件实现简易计算器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
HoneyViewer图片查看器是一个基于java Swing实现的图片查看器,主要实现了图片展示功能。 本实验手册根据需求完成图片读取、切换等功能,平台的全称为:基于java Swing实现的HoneyViewer图片查看器(后简称为: Keep-...
使用Java Swing界面实现数据库基本操作,使用Java Swing界面实现数据库基本操作
用java swing 实现的pdf阅读器 很强大 喜欢。。。
Java基于Swing实现的简单聊天室,支持多人在线闲谈.zip