获取jTextPane超链接的价值

时间:2015-03-13 16:54:46

标签: java hyperlink

你好,所以我有一个jTextPane,我在其中插入普通和带下划线的文本。我想要做的是当我单击jTextPane上的超链接以获取超链接字符串值。你知道怎么做吗?谢谢! 我需要这个聊天。当有人上传文件时,它会在textpane中插入以下内容:用户上传的文件 file.txt (作为超链接)。我只需要能够在点击它时抓取超链接的String值。

1 个答案:

答案 0 :(得分:0)

以下是一个非常快速的例子:

public class Test {
    private JFrame frame;

    public Test() {
        // make frame
        frame = new JFrame("JTextPane test");
        frame.setSize(200,100);

        // create text pane
        JTextPane textPane = new JTextPane();

        // set up for HTML
        textPane.setEditorKit(JEditorPane.createEditorKitForContentType("text/html"));
        // url of file
        String url = "file://path/to/somefile.txt";
        // disable editing
        textPane.setEditable(false);

        // put a hyperlink in the pane
        textPane.setText("<a href='" + url + "'>somefile.txt</a>");

        // add link listener
        textPane.addHyperlinkListener(new HyperlinkListener() {
            @Override
            public void hyperlinkUpdate(HyperlinkEvent e) {
                if ( e.getEventType() == HyperlinkEvent.EventType.ACTIVATED ) {
                    // if clicked, show the URL
                    JOptionPane.showMessageDialog(null, e.getURL(), "Link clicked!", JOptionPane.INFORMATION_MESSAGE);
                }
            }
        });

        // add content
        frame.getContentPane().add(textPane);

        frame.setVisible(true);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    // run
    public static void main(String[] args) {
        Test t = new Test();
    }
}

以下是输出的截图:

enter image description here