`
tanjiayqq
  • 浏览: 20303 次
文章分类
社区版块
存档分类
最新评论

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

阅读更多
可能很多人不知道,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 添加超链接 打开页面

    在Swing中添加超链接并实现打开网页的功能,是很多开发者在创建交互式应用时可能遇到的需求。这篇博客文章(https://lazycat774880994.iteye.com/blog/567412)很可能详细讲解了如何在Swing应用中集成超链接,并且...

    含有可链接标签的Swing气泡

    在给定的资源中,我们看到一个自定义的Swing组件,它扩展了这一特性,实现了"可链接标签",这在创建具有交互性的用户界面时非常有用。 标题"含有可链接标签的Swing气泡"暗示了一个定制的Swing组件,这个组件不仅...

    JavaSE JLabel超链接例子

    自定义JLabel通常涉及到重写`paintComponent()`方法来绘制带有下划线的文本,并实现MouseListener接口,监听鼠标事件。当鼠标点击事件发生时,我们可以调用`Desktop.browse()`方法打开浏览器并导航到指定URL。 例如...

    用java实现的简单浏览器程序

    本项目的实现较为简单,主要涵盖了Java Swing图形用户界面的基本用法,以及如何利用Java的网络编程能力加载和显示网页内容。对于初学者来说,这是一个很好的学习示例,可以帮助理解Java GUI编程的基础知识和技术细节...

    Make a Label Act Like an Internet Link

    在大多数编程环境中,如Visual Basic(VB)、C#或Java Swing,标签控件(Label)是一个简单的图形组件,用于显示静态文本。通常,它们不响应鼠标点击事件,但我们可以自定义其行为。 在VB中,可以实现这个功能如下...

    一个可实现语音识别的类

    在不同编程语言和框架中,例如C#的Label控件或JavaFX的Label,都可以设置文本颜色。开发者可以通过修改字体样式、大小和颜色属性来实现这一功能。 超链接在软件中常用于导航或提供更多信息。在GUI应用中,可以通过...

    计算机软件及应用图形用户界面设计PPT课件.pptx

    例如,AWT中的`HelloWorldAwt`示例创建了一个简单的窗口,包含一个标签,而Swing的`HelloWorldSwing`示例则展示了如何使用Swing创建相同效果但功能更强大的窗口。 总的来说,图形用户界面设计是提升用户体验的关键...

    计算机软件及应用图形用户界面设计PPT学习教案.pptx

    【图形用户界面设计】是计算机软件及应用领域中的核心部分,它通过图形化方式实现用户与计算机之间的交互。用户可以通过菜单、按钮等图形界面元素,使用鼠标或键盘操作来向计算机发出指令,启动程序,并接收以图形化...

    java 标签的制作

    创建一个简单的JLabel,你需要导入javax.swing.*包,然后通过JLabel类的构造函数来实例化标签。例如: ```java import javax.swing.JLabel; public class Main { public static void main(String[] args) { ...

    Java Applet内嵌网页运行初探 (1).pdf

    对于音乐播放,可以创建一个链接到音乐文件的超链接,或者在Applet内部实现音乐的加载和播放逻辑。然而,需要注意的是,由于安全性和现代浏览器的限制,Java Applet的使用已经逐渐减少,许多现代浏览器默认不再支持...

    Eclipse_Swt_Jface_核心应用_部分19

    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 ...

    SWT开发参考文档

    - **Label类组件**:用于显示静态文本或图标。 - **Text组件**:用于输入文本,支持单行或多行文本。 - **Link组件**:创建超链接样式的行为元素。 - **Sash组件**:允许用户通过拖动分割条来调整组件大小。 - **...

    2021-2022计算机二级等级考试试题及答案No.1009.docx

    JFrame是Java Swing库中的一个组件,用于创建带有标题、边框和可关闭、最小化、最大化按钮的窗口。 3. PHP中变量名的规则:变量名区分大小写(A正确),必须以$为前缀(B正确),变量名不能以数字字符开头(D正确)...

    2021-2022计算机二级等级考试试题及答案No.3735.docx

    - **描述**:Swing是在AWT基础上构建的一套新的图形界面系统,提供了AWT所能够提供的所有功能,并且所有的Swing组件都是用Java代码实现的。 #### 21. 控件方法 - **知识点**:在Windows Forms应用程序中,不同的...

    java基础知识

    - AWT组件:Button、TextField、Label等。 - Swing组件:JButton、JTextField、JLabel等。 - 组件的区别与联系。 2. **布局管理器**: - FlowLayout:按顺序排列。 - BorderLayout:上下左右中排列。 - ...

    2021-2022计算机二级等级考试试题及答案No.9250.docx

    25. 网页是网站的基本单位,可以包含超链接,但一个网站的首页是网页之一,而不是网页本身。Word2000可以用于简单网页的编写,但它不是专业的网页编辑工具。 以上知识点涵盖了网络基础、软件工程、数据库管理、编程...

    2021-2022计算机二级等级考试试题及答案No.4145.docx

    - **详细解释**:Swing 是Java 的GUI编程工具包之一,提供了多种组件用于构建图形用户界面。`JTextField`是Swing中用于接收用户输入文本的组件,常用于输入框、搜索框等场景。 ### 11. 十进制数的二进制表示 - **...

    2021-2022计算机二级等级考试试题及答案No.19226.docx

    - 字数和行数等详细统计通常需要专门的应用程序或工具来实现。 ### 2. 数据管理技术发展过程中的区别 - **描述**:文件系统与数据库系统的主要区别在于是否具备特定的数据模型。 - **知识点**: - **文件系统**:...

Global site tag (gtag.js) - Google Analytics