是否可以用Java创建程序来创建要在Chrome中链接的文本?

时间:2013-01-05 08:28:45

标签: java swing hyperlink

我为这个长期问题道歉。

前几天我正在浏览一个论坛,我看到一些链接到youtube和其他网站的文本。 我必须始终突出显示,然后复制并粘贴或右键单击谷歌浏览器中的“转到”。

因为我一直在玩Java,所以我想创建自己的小程序,它会给出一个带有地址的文本的链接。例如,如果我说“嘿,看看这个视频,我前几天看到了'www.youtube.com'”我希望youtube部分可以点击。

有人可以告诉我这样的事情是否可能,如果是的话,我必须使用哪些库,最后,我怎样才能找到java中所有导入和库的列表?

感谢。

1 个答案:

答案 0 :(得分:17)

JEditorPane中使用HTML并添加HyperLinkListener以检测点击网址。

使用Desktop API打开带有URL的默认浏览器。

类似的东西:

enter image description here

import java.awt.Desktop;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

public class Test {

    public static void main(String[] argv) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {

                JEditorPane jep = new JEditorPane();
                jep.setContentType("text/html");//set content as html
                jep.setText("Welcome to <a href='http://stackoverflow.com/'>StackOverflow</a>.");

                jep.setEditable(false);//so its not editable
                jep.setOpaque(false);//so we dont see whit background

                jep.addHyperlinkListener(new HyperlinkListener() {
                    @Override
                    public void hyperlinkUpdate(HyperlinkEvent hle) {
                        if (HyperlinkEvent.EventType.ACTIVATED.equals(hle.getEventType())) {
                            System.out.println(hle.getURL());
                            Desktop desktop = Desktop.getDesktop();
                            try {
                                desktop.browse(hle.getURL().toURI());
                            } catch (Exception ex) {
                                ex.printStackTrace();
                            }
                        }
                    }
                });


                JFrame f = new JFrame("HyperlinkListener");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.add(jep);
                f.pack();
                f.setVisible(true);
            }
        });
    }
}