可能很多人不知道,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简单实现。相关推荐

  1. 批量生成带超链接目录且自动更新 Excel

    文章目录 自动生成带超链接的目录 一.知识点 get.workbook宏表函数使用 INDEX() FIND() REPLACE() HYPERLINK() 二.举例 第一步:定义名称 第二步:提取所 ...

  2. Swing之带超链接的label简单实现。

    可能很多人不知道,Swing其实可以添加html代码的,利用这个特性,我们可以用Label做很多奇特效果,例如可以做一个带超链接的label import java.awt.Color; import ...

  3. android过滤html标签,Android中处理TextView带超链接HTML标签的点击事件处理方法

    主要的处理方法: /** * 格式化超链接文本内容并设置点击处理 * */ private CharSequence getClickableHtml(String html) { Spanned s ...

  4. HTML链接:带超链接的网页

    HTML链接:带超链接的网页 任务描述 相关知识 概念 属性 href属性 锚 URL实例:创建网页内导航 相对 URL实例:跳转到同一网站的另一个网页 绝对 URL实例:跳转到另一网页 发送电子邮件 ...

  5. html语言的网页带超链接的,HTML语言与网页设计 ——超链接.ppt

    HTML语言与网页设计 --超链接 HTML语言与网页设计 --超链接 学习目标 理解超链接的基本概念,掌握A标记符的用法. 超链接基础 URL(Universal Resources Locator ...

  6. 怎样设置微信公众号延迟自动回复消息带超链接

    为了实现的微信公众号延迟自动回复消息带超链接需要,第三方平台微号帮提供了粉丝对话定时推送功能实现,可以让微信公众号自动回复消息带超链接,粉丝点击链接可以进入其他平台,设置自动回复消息添加链接,注意先在 ...

  7. WPS.JS宏应用案例01:创建带超链接的工作表目录

    HI,大家好,我是星光. 之前给大家分享了如何使用函数或VBA创建带超链接的工作表目录,今天再给大家分享一下,如何使用WPS的JS宏实现同样的目的. 复制运行以下代码,即可在当前工作表的A列创建如上图 ...

  8. 在android平台微信分享图片中带超链接

    话不多说直接上代码. Bitmap bmp=ScreenShot.getbitmap(); //从SD卡中获取的图片 if(bmp==null) { return; } WXWebpageObject ...

  9. Excel批量创建带超链接的工作表目录

    工作中总会遇到包含多个工作表的工作簿,很多人都在想这时候如果能有一个目录,不但能显示出所有的工作表名称,还能够链接跳转到指定的工作表,该有多好呀...... 于是,一些勤奋的人们就开始行动了,他们手动 ...

最新文章

  1. rtk服务器协议,rtk的服务器ip地址
  2. java筑基期(6)----javascript(高级(2))
  3. cordova打包app后发请求出现 Provisional headers are shown的问题
  4. Android之Only fullscreen opaque activities can request orientation
  5. 搭建: canal部署与实例运行
  6. 快速入门ECS快照功能,助力大数据容灾保护
  7. 随想录(为什么循环队列具有先天的并行性)
  8. Navicat连接出现了2003-Can’t connect to MySQL server on ‘localhost’…(已解决)
  9. 《Head First设计模式》
  10. Windows下GDAL3.1.2编译 (VS2015)
  11. 阿里云 centos 7.6 安装和启动redis 6
  12. windows系统ping包显示时间(绝对好用)
  13. Minio纠删码与存储级别
  14. 指数分布的期望和方差推导
  15. 30天不动如山计划(重要)
  16. 零基础元宇宙AR Avatar制作教程
  17. 苏州VS上海:城市化的二个阶段
  18. Jupyter notebook中的Markdown语法:表格
  19. 对12306车票数据的提取
  20. 【蓝桥杯】 《3W字数总结》 蓝桥杯Java必备基础知识以及国赛真题解析

热门文章

  1. 一个简单的fftw3例子:正弦信号的离散傅里叶变换
  2. wsl2启动桌面_WSL2使用xrdp实现图形桌面
  3. Python生态概览(二):网络爬虫、web信息提取、网站开发、网络应用开发
  4. python守护进程_让Python脚本成为守护进程
  5. mybatis ------ 逆向工程(十)
  6. 数据库主键和索引区别
  7. python汉语读音_【学习】python 汉语转拼音
  8. 发动机性能测试软件,发动机的性能测试方法
  9. 自拍会不会被大数据_大数据教你自拍 脸占画面1/3最漂亮
  10. matlab 量化 策略,【策略分享】Matlab量化交易策略源码分享