可能很多人不知道,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/
分享到:
相关推荐
在Swing中添加超链接并实现打开网页的功能,是很多开发者在创建交互式应用时可能遇到的需求。这篇博客文章(https://lazycat774880994.iteye.com/blog/567412)很可能详细讲解了如何在Swing应用中集成超链接,并且...
在给定的资源中,我们看到一个自定义的Swing组件,它扩展了这一特性,实现了"可链接标签",这在创建具有交互性的用户界面时非常有用。 标题"含有可链接标签的Swing气泡"暗示了一个定制的Swing组件,这个组件不仅...
自定义JLabel通常涉及到重写`paintComponent()`方法来绘制带有下划线的文本,并实现MouseListener接口,监听鼠标事件。当鼠标点击事件发生时,我们可以调用`Desktop.browse()`方法打开浏览器并导航到指定URL。 例如...
本项目的实现较为简单,主要涵盖了Java Swing图形用户界面的基本用法,以及如何利用Java的网络编程能力加载和显示网页内容。对于初学者来说,这是一个很好的学习示例,可以帮助理解Java GUI编程的基础知识和技术细节...
在大多数编程环境中,如Visual Basic(VB)、C#或Java Swing,标签控件(Label)是一个简单的图形组件,用于显示静态文本。通常,它们不响应鼠标点击事件,但我们可以自定义其行为。 在VB中,可以实现这个功能如下...
在不同编程语言和框架中,例如C#的Label控件或JavaFX的Label,都可以设置文本颜色。开发者可以通过修改字体样式、大小和颜色属性来实现这一功能。 超链接在软件中常用于导航或提供更多信息。在GUI应用中,可以通过...
例如,AWT中的`HelloWorldAwt`示例创建了一个简单的窗口,包含一个标签,而Swing的`HelloWorldSwing`示例则展示了如何使用Swing创建相同效果但功能更强大的窗口。 总的来说,图形用户界面设计是提升用户体验的关键...
【图形用户界面设计】是计算机软件及应用领域中的核心部分,它通过图形化方式实现用户与计算机之间的交互。用户可以通过菜单、按钮等图形界面元素,使用鼠标或键盘操作来向计算机发出指令,启动程序,并接收以图形化...
创建一个简单的JLabel,你需要导入javax.swing.*包,然后通过JLabel类的构造函数来实例化标签。例如: ```java import javax.swing.JLabel; public class Main { public static void main(String[] args) { ...
对于音乐播放,可以创建一个链接到音乐文件的超链接,或者在Applet内部实现音乐的加载和播放逻辑。然而,需要注意的是,由于安全性和现代浏览器的限制,Java Applet的使用已经逐渐减少,许多现代浏览器默认不再支持...
5.3 标签(Label) 64 5.3.1 文本标签 64 5.3.2 分割线标签 64 5.3.3 自定义标签(CLabel) 65 5.4 文本框(Text) 65 5.4.1 文本框的样式 66 5.4.2 文本框程序示例 66 5.4.3 常用的方法 68 5.5 ...
- **Label类组件**:用于显示静态文本或图标。 - **Text组件**:用于输入文本,支持单行或多行文本。 - **Link组件**:创建超链接样式的行为元素。 - **Sash组件**:允许用户通过拖动分割条来调整组件大小。 - **...
JFrame是Java Swing库中的一个组件,用于创建带有标题、边框和可关闭、最小化、最大化按钮的窗口。 3. PHP中变量名的规则:变量名区分大小写(A正确),必须以$为前缀(B正确),变量名不能以数字字符开头(D正确)...
- **描述**:Swing是在AWT基础上构建的一套新的图形界面系统,提供了AWT所能够提供的所有功能,并且所有的Swing组件都是用Java代码实现的。 #### 21. 控件方法 - **知识点**:在Windows Forms应用程序中,不同的...
- AWT组件:Button、TextField、Label等。 - Swing组件:JButton、JTextField、JLabel等。 - 组件的区别与联系。 2. **布局管理器**: - FlowLayout:按顺序排列。 - BorderLayout:上下左右中排列。 - ...
25. 网页是网站的基本单位,可以包含超链接,但一个网站的首页是网页之一,而不是网页本身。Word2000可以用于简单网页的编写,但它不是专业的网页编辑工具。 以上知识点涵盖了网络基础、软件工程、数据库管理、编程...
- **详细解释**:Swing 是Java 的GUI编程工具包之一,提供了多种组件用于构建图形用户界面。`JTextField`是Swing中用于接收用户输入文本的组件,常用于输入框、搜索框等场景。 ### 11. 十进制数的二进制表示 - **...
- 字数和行数等详细统计通常需要专门的应用程序或工具来实现。 ### 2. 数据管理技术发展过程中的区别 - **描述**:文件系统与数据库系统的主要区别在于是否具备特定的数据模型。 - **知识点**: - **文件系统**:...