【问题标题】:java.lang.IllegalArgumentException: Must be StyledEditorKitjava.lang.IllegalArgumentException:必须是 StyledEditorKit
【发布时间】:2011-10-31 16:00:13
【问题描述】:

我们正在尝试使用JTextPane 呈现HTML 和纯文本。基本上实际内容托管在远程服务器上,该内容可以包含一定程度的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。

提前致谢。

已编辑。

【问题讨论】:

  • 无法重现,按预期正常工作

标签: java swing jtextpane


【解决方案1】:

听起来您的意思是,既然您希望同时支持来自 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
    }
  }
});

【讨论】:

  • 感谢您的建议,我可以确认我们已经尝试过了。
猜你喜欢
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 2017-05-13
  • 2018-03-31
  • 2022-10-11
相关资源
最近更新 更多