JLabels中的超链接

Geo*_*mms 5 java swing jlabel hyperlink

这是我在名为Test2的项目中名为Test2.java的文件中的代码,该文件名为test2;

package test2;

import javax.swing.JFrame;

public class Test2 {
    public static void main(String[] args) {
    JFrame mainWindow = new HtmlWindow("<html>"
            + "<a href=\"http://stackoverflow.com\">"
            + "blah</a></html>");
        mainWindow.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

在同一个包中,我将此代码放在一个名为HtmlWindow.java的文件中;

package test2;

import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;


class HtmlWindow extends JFrame {
    public HtmlWindow(String refreshGrid) {
        super("blah");
        setSize(300, 100);
        Container content = getContentPane();
        String labelText = refreshGrid;
        JLabel coloredLabel = new JLabel (labelText, JLabel.CENTER); 
        content.add(coloredLabel, BorderLayout.NORTH);

    }

}
Run Code Online (Sandbox Code Playgroud)

当我运行项目时,我在预期位置得到一个带有"blah"字样的窗口,蓝色和下划线,但是当我将鼠标悬停在单词上时光标不会改变,当我点击它时也不会发生任何事情.

我的问题如下;

  • 是否可以在jLabels中添加超链接?
  • 如果是这样,我做错了什么,或者程序运行不正常?
  • 如果没有,什么是好的选择?我不使用JButtons的原因是,最终我想创建一个任意数量的超链接的网格,我希望超链接是图像,虽然JButtons可以有图像,我不希望超链接到看起来像"按钮".我想我可以使用不可编辑的JEditorPane?

Ale*_*exR 4

Swing 不是一个功能齐全的浏览器。它支持简单的 HTML,包括链接,但不会自动更改光标样式。据我所知,您必须以编程方式执行此操作,即将鼠标侦听器添加到标签中,并在鼠标悬停在标签上时更改光标样式。显然,您可以编写自己的类LinkLabel来实现此逻辑,然后在每次需要时使用它。