使用JLabel作为链接打开弹出窗口

时间:2012-07-24 04:17:11

标签: java swing jlabel

  

可能重复:
  How to add hyperlink in JLabel

我正在使用“JLabel”来显示段落,我需要将该段落的某些部分作为链接打开一个新的弹出窗口,请告诉我如何执行此操作,例如。

this is ABC application and here is the introduction of the app:
  this is line one
  this is line two
  this is line three

在这里,我必须将单词“two”作为可点击的链接来打开弹出窗口。

2 个答案:

答案 0 :(得分:4)

我个人会建议使用JEditorPane而不是JPanel;它对于显示段落更有用,并且可以显示HTML,例如链接。然后,您可以简单地调用addHyperlinkListener(Some hyperlinklistener)来添加一个侦听器,当有人单击该链接时将调用该侦听器。你可以弹出一些东西,或者打开在真实浏览器中点击的内容,由你决定。

这是一些示例代码(尚未测试,应该可以工作):

JEditorPane ep = new JEditorPane("text/html", "Some HTML code will go here. You can have <a href=\"do1\">links</a> in it. Or other <a href=\"do2\">links</a>.");
ep.addHyperlinkListener(new HyperlinkListener() {
         public void hyperlinkUpdate(HyperlinkEvent arg0) {
            String data = arg0.getDescription();
            if(data.equals("do1")) {
                //do something here
            }
            if(data.equals("do2")) {
                //do something else here
            }
        }
    });

答案 1 :(得分:1)

通常当我们想要一个可点击的标签时,我们只需将它作为一个按钮即可。我最近使用Label而不是按钮,因为我发现它更容易控制外观(图标周围没有边框),我希望标签看起来有所不同,具体取决于应用程序显示的一些数据。但我可能只是用JButton完成了整个事情。

如果您只想点击JLabel的部分,那就会变得更加复杂。单击鼠标时,您需要检查相对鼠标坐标,看它是否与您想要点击的标签部分相对应。

或者,您可能希望查看JEditorPane。这允许您将HTML放入swing应用程序,然后您可以实现一些HyperLinkListener。

但是如果你确实需要一个标签来触发一个动作,就像你最初要求的那样,你可以像这样添加一个mouselistener:

noteLabel = new JLabel("click me");
noteLabel.addMouseListener( new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
        System.out.println("Do something");
    }

    public void mouseEntered(MouseEvent e) {
        //You can change the appearance here to show a hover state
    }

    public void mouseExited(MouseEvent e) {
        //Then change the appearance back to normal.
    }
});