【问题标题】:Is it possible to create programs in Java that create text to link in Chrome?是否可以在 Java 中创建创建文本以在 Chrome 中链接的程序?
【发布时间】:2012-12-19 15:40:17
【问题描述】:

对于这个冗长的问题,我深表歉意。

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

由于我一直在使用 Java,所以我想制作自己的小程序,该程序将提供指向具有地址的文本的链接。例如,如果我说“嘿,看看我前几天看到的 'www.youtube.com' 的这个视频”,我希望 youtube 部分是可点击的。

谁能告诉我这样的事情是否可行,如果可行,我必须为此使用哪些库,最后,我如何在 java 中找到所有导入和库的列表?

谢谢。

【问题讨论】:

标签: java swing hyperlink


【解决方案1】:

JEditorPane 中使用HTML 并添加HyperLinkListener 以检测对URL 的点击。

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

类似:

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);
            }
        });
    }
}

【讨论】:

  • 谢谢大卫。这有点帮助。
猜你喜欢
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 2018-03-12
相关资源
最近更新 更多