Swing之带超链接的label简单实现。
来源:互联网 发布:公司客户数据保密制度 编辑:程序博客网 时间:2024/04/30 11:06
可能很多人不知道,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的简单实现。
最后介绍个学习网站:Here
- Swing之带超链接的label简单实现。
- Qt实现Label超链接效果
- ugui简单的超链接实现
- Swing 实现超链接 打开网页
- 简单的超链接实现表单ajax提交
- swing 实现label动态显示数据
- HighCharts之2D带Label的折线图
- java swing实现简单的图片浏览器
- 简单记事本的实现(swing技术)
- Java的Swing实现一个简单记事本
- Java swing实现简单计算器的开发
- Java Swing实现的简单记事本
- Swing实现简单的简历样式
- 使用JAVA swing实现简单的记事本
- Java源码-简单计算器界面的AWT实现与Swing实现之比较
- 慕课HTML课程之超链接的实现
- Swing实现的带提示文本的验证文本框
- 基于Java Swing的超链接标签
- 隐马尔可夫模型(HMM)攻略
- 【新手教程】如何向App Store提交应用
- javascript停止页面所有计时器
- 【EmbeddedLinuxPrimer翻译】第二章:你的第一次嵌入式体验(二)
- 王力宏闪婚?不是吧
- Swing之带超链接的label简单实现。
- mysql left join right join inner join例子
- c语言控制台的俄罗斯方块
- 如何进行真机测试?
- mysql提取密码的方法
- do while 循环语句
- C++使用临界区(互斥体)来控制多线程访问同一个变量(经典例子)
- 使用javascript打印指定区域内容
- 阅读器之家推荐几款比较好用的rss阅读器