有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing java。lang.IllegalArgumentException:必须是StyledEditorKit

我们正在尝试使用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

提前谢谢

编辑


共 (1) 个答案

  1. # 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
        }
      }
    });