java label 超链接_Swing之带超链接的label简单实现。
可能很多人不知道,Swing其实可以添加html代码的,利用这个特性,我们可以用Label做很多奇特效果,例如可以做一个带超链接的label
class="java">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("" + vText + "");
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("" + text + "");
}
@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("" + text + "");
}
@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("" + text + "");
}
鼠标移入时,把光标设置成手状,把文字颜色设置为蓝色,然后文字添加下划线。
鼠标移出事件:
@Override
public void mouseExited(MouseEvent e) {
LinkLabel.this.setCursor(Cursor
.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
if (preColor != null)
LinkLabel.this.setForeground(preColor);
LinkLabel.this.setText("" + text + "");
}
光标形状还原,颜色还原,文字下划线取消。
鼠标单击事件:
@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 label 超链接_Swing之带超链接的label简单实现。相关推荐
- 批量生成带超链接目录且自动更新 Excel
文章目录 自动生成带超链接的目录 一.知识点 get.workbook宏表函数使用 INDEX() FIND() REPLACE() HYPERLINK() 二.举例 第一步:定义名称 第二步:提取所 ...
- Swing之带超链接的label简单实现。
可能很多人不知道,Swing其实可以添加html代码的,利用这个特性,我们可以用Label做很多奇特效果,例如可以做一个带超链接的label import java.awt.Color; import ...
- android过滤html标签,Android中处理TextView带超链接HTML标签的点击事件处理方法
主要的处理方法: /** * 格式化超链接文本内容并设置点击处理 * */ private CharSequence getClickableHtml(String html) { Spanned s ...
- HTML链接:带超链接的网页
HTML链接:带超链接的网页 任务描述 相关知识 概念 属性 href属性 锚 URL实例:创建网页内导航 相对 URL实例:跳转到同一网站的另一个网页 绝对 URL实例:跳转到另一网页 发送电子邮件 ...
- html语言的网页带超链接的,HTML语言与网页设计 ——超链接.ppt
HTML语言与网页设计 --超链接 HTML语言与网页设计 --超链接 学习目标 理解超链接的基本概念,掌握A标记符的用法. 超链接基础 URL(Universal Resources Locator ...
- 怎样设置微信公众号延迟自动回复消息带超链接
为了实现的微信公众号延迟自动回复消息带超链接需要,第三方平台微号帮提供了粉丝对话定时推送功能实现,可以让微信公众号自动回复消息带超链接,粉丝点击链接可以进入其他平台,设置自动回复消息添加链接,注意先在 ...
- WPS.JS宏应用案例01:创建带超链接的工作表目录
HI,大家好,我是星光. 之前给大家分享了如何使用函数或VBA创建带超链接的工作表目录,今天再给大家分享一下,如何使用WPS的JS宏实现同样的目的. 复制运行以下代码,即可在当前工作表的A列创建如上图 ...
- 在android平台微信分享图片中带超链接
话不多说直接上代码. Bitmap bmp=ScreenShot.getbitmap(); //从SD卡中获取的图片 if(bmp==null) { return; } WXWebpageObject ...
- Excel批量创建带超链接的工作表目录
工作中总会遇到包含多个工作表的工作簿,很多人都在想这时候如果能有一个目录,不但能显示出所有的工作表名称,还能够链接跳转到指定的工作表,该有多好呀...... 于是,一些勤奋的人们就开始行动了,他们手动 ...
最新文章
- rtk服务器协议,rtk的服务器ip地址
- java筑基期(6)----javascript(高级(2))
- cordova打包app后发请求出现 Provisional headers are shown的问题
- Android之Only fullscreen opaque activities can request orientation
- 搭建: canal部署与实例运行
- 快速入门ECS快照功能,助力大数据容灾保护
- 随想录(为什么循环队列具有先天的并行性)
- Navicat连接出现了2003-Can’t connect to MySQL server on ‘localhost’…(已解决)
- 《Head First设计模式》
- Windows下GDAL3.1.2编译 (VS2015)
- 阿里云 centos 7.6 安装和启动redis 6
- windows系统ping包显示时间(绝对好用)
- Minio纠删码与存储级别
- 指数分布的期望和方差推导
- 30天不动如山计划(重要)
- 零基础元宇宙AR Avatar制作教程
- 苏州VS上海:城市化的二个阶段
- Jupyter notebook中的Markdown语法:表格
- 对12306车票数据的提取
- 【蓝桥杯】 《3W字数总结》 蓝桥杯Java必备基础知识以及国赛真题解析
热门文章
- 一个简单的fftw3例子:正弦信号的离散傅里叶变换
- wsl2启动桌面_WSL2使用xrdp实现图形桌面
- Python生态概览(二):网络爬虫、web信息提取、网站开发、网络应用开发
- python守护进程_让Python脚本成为守护进程
- mybatis ------ 逆向工程(十)
- 数据库主键和索引区别
- python汉语读音_【学习】python 汉语转拼音
- 发动机性能测试软件,发动机的性能测试方法
- 自拍会不会被大数据_大数据教你自拍 脸占画面1/3最漂亮
- matlab 量化 策略,【策略分享】Matlab量化交易策略源码分享