我们正尝试使用HTML
呈现JTextPane
和纯文本。基本上,实际内容托管在远程服务器上,此内容可以包含某种程度的HTML
标记,或者根本不包含任何标记。在我的JTextPane
中,我将其定义如下:
JTextPane jText = new JTextPane();
jText.setEditable(false);
jText.setContentType("text/html");
String content = "Please view article <a href=mydomain.com/content.txt>Link..</a>";
jText.setText(content);
然后使用HyperlinkListener
希望能够在单击链接时呈现内容。我这样做是使用下面的语法;
jText.addHyperlinkListener(new HyperlinkListener()
{
public void hyperlinkUpdate(final HyperlinkEvent he)
{
//Render the page
try{
setPage(he.getURL()); //Error on this line
}catch(Exception e){e.printStackTrace();}
}
});
不幸的是,当我们点击链接来呈现内容时,我们最终会遇到例外情况:
java.lang.IllegalArgumentException: Must be StyledEditorKit
at javax.swing.JTextPane.setEditorKit(JTextPane.java:474)
at javax.swing.JEditorPane.setContentType(JEditorPane.java:888)
at javax.swing.JEditorPane.getStream(JEditorPane.java:713)
at javax.swing.JEditorPane.setPage(JEditorPane.java:408)
当内容没有可用的HTML标记时,这就像。有人可以帮助我们解决此问题,以便我们可以呈现纯文本和HTML。
提前致谢。
编辑。
答案 0 :(得分:0)
听起来你所说的是因为你想要支持来自JTextPane的HTML和纯文本作为输入,所以没有接收到URL并不是真正的问题。在这种情况下,您应该考虑记录/吃掉例外:
jText.addHyperlinkListener(new HyperlinkListener()
{
public void hyperlinkUpdate(final HyperlinkEvent he)
{
try {
//Render the page
setPage(he.getURL()); //Error on this line
} catch (IllegalArgumentException e) {
// either log the argument here, or just eat it and do nothing with it. logger.error() recommended
}
}
});