是否可以使用Java中的基本Swing组件创建可选择的超链接?

Ole*_*sov 5 html java swing jlabel jtextfield

我正在尝试添加到JPanel的超链接.我想将它的文本设为蓝色(并加下划线),并且链接应该是可选的(复制它的某些部分).所以我尝试使用JLabel:是的,它允许像这样写一些[糟糕的]:

someLabel.setText("<html><font color=\"#0000ff\"><u>http://example.com</u></font></html>");
Run Code Online (Sandbox Code Playgroud)

但不幸的是,JLabel不允许选择任何文本.我也尝试使用JTextField,但相反,它不允许在其字段中使用HTML/CSS.

那么,是否存在任何方法来创建具有基本Swing组件的超链接(具有适当的指示),这将允许选择[并复制]其中的一部分,或者我应该尝试使用某些第三方组件?谢谢.

Mic*_*rdt 5

您可以以不可编辑的方式显示HTML内容JEditorPane.它是可选择的,您可以通过以下方式使链接起作用HyperlinkListener:

    JEditorPane content = new JEditorPane();
    content.setContentType("text/html");
    content.setEditable(false);
    content.setText("<html><a href=\"http://stackoverflow.com\">Link</a></html>"));
    content.addHyperlinkListener(new HyperlinkListener() {
        @Override
        public void hyperlinkUpdate(HyperlinkEvent e) {
            if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
                try {
                    Desktop.getDesktop().browse(e.getURL().toURI());
                } catch (Exception e1) {
                    Logger.getLogger(getClass()).error(
                            "Error opening link " + e.getURL(), e1);
                }
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)