我有JTable
使用JTextPane
作为编辑器和渲染器。我在编辑器中添加了一个keyListener,用于侦听“space”字符并检查最后一个字是否为URL,如果是,则使用以下属性将其作为超链接添加到编辑器中:attrs.addAttribute(HTML.Attribute.HREF, url);
。我很快就认为,当我粘贴文本时,这不会将URL转换为超链接,因此我决定使用DocumentFilter
来完成此操作。
如何创建DocumentFilter
来检查要插入/替换的文本是否包含URL,以及是否插入/替换了具有HTML.Attribute.HREF
属性和其他文本的URL是吗?
答案 0 :(得分:1)
参见示例http://java-sl.com/tip_autocreate_links.html 没有必要使用DocumentFilter。 LIstener就足够了。
只需使用虚拟属性标记插入的内容,然后将其替换为超链接html。
答案 1 :(得分:-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 */ }