Swing之带超链接的label简单实现。
2013-12-01 23:33
513 查看
可能很多人不知道,Swing其实可以添加html代码的,利用这个特性,我们可以用Label做很多奇特效果,例如可以做一个带超链接的label
上面的这个类在实例化的时候传入显示值和链接即可用。
我们可以看到,这个类添加了3个鼠标事件。鼠标移入事件、鼠标移除事件、鼠标点击事件:
鼠标移入事件:
鼠标移入时,把光标设置成手状,把文字颜色设置为蓝色,然后文字添加下划线。
鼠标移出事件:
光标形状还原,颜色还原,文字下划线取消。
鼠标单击事件:
直接调用系统提供的api,打开默认浏览器打开网站。
这就是超链接label的简单实现。
最后介绍个学习网站:Here
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简单实现。
- 无需太多的代码利用超链接即可实现简单自定义漂亮复选框
- swing之记事本的简单实现
- JAVA Swing实现简单的体重指数(BMI)计算器
- swing 插件实现简单的文件读取与保存
- 使用swing实现简单的五子棋和五子棋人机对战
- JDBC简单二层结构,用Swing实现
- 使用Swing实现简易而不简单的文档编辑器
- 简单的超链接实现表单ajax提交
- Java的Swing实现一个简单记事本
- Swing 实现超链接 打开网页
- vs2005简单的使用控件,实现网站常用的任意文本超链接
- 超简单实现TextView中某段文字超链接点击打开浏览器跳转到网页
- java swing实现简单的图片浏览器
- Java SE 中swing的简单实例 ( swing实现简单学生管理系统的登录界面)
- 一个能实现超链接的最简单程序
- JavaSwing+Hibernate实现简单的学生信息管理系统
- Swing 实现简单的自定义不规则按钮组件
- Java_swing_边框简单实现
- Java Swing实现的简单记事本