1

我有一个JTable用作JTextPane编辑器和渲染器的。我在编辑器中添加了一个 keyListener,它侦听“空格”字符并检查最后一个单词是否为 URL,如果是,则使用此属性将其作为超链接添加到编辑器中attrs.addAttribute(HTML.Attribute.HREF, url);:我很快发现当我粘贴文本时这不会将 URL 转换为超链接,所以我决定我需要使用DocumentFilter.

如何创建一个DocumentFilter检查要插入/替换的文本是否包含 URL,以及它是否使用HTML.Attribute.HREF属性和文本的其余部分插入/替换这些 URL?

4

2 回答 2

1

看例子http://java-sl.com/tip_autocreate_links.html 没有必要使用 DocumentFilter。监听器就足够了。

只需使用虚拟属性标记插入的内容,然后将其替换为超链接 html。

于 2012-10-29T06:21:32.227 回答
-1
// somewhere add text reformated as html link
setText("<HTML>Click the <FONT color=\"#000099\"><U>link</U></FONT>"
        + " to go to the Java website.</HTML>");

// somewhere add a listener for clicks
addActionListener(new OpenUrlAction());

// Define uri and open action
 final URI uri = new URI("http://java.sun.com");
    class OpenUrlAction implements ActionListener {
      @Override public void actionPerformed(ActionEvent e) {
        open(uri);
      }
    }

// Define open uri method
private static void open(URI uri) {
    if (Desktop.isDesktopSupported()) {
      try {
        Desktop.getDesktop().browse(uri);
      } catch (IOException e) { /* TODO: error handling */ }
    } else { /* TODO: error handling */ }
于 2012-10-28T19:55:11.227 回答