没有堆栈跟踪的JXErrorPane

时间:2012-08-13 10:40:40

标签: java exception swingx

在寻找显示错误的简单方法时,我发现了SwingX

目前我正在使用

JXErrorPane.showDialog(null, new ErrorInfo("Error", e.getMessage(), null, null, exception, ErrorLevel.SEVERE, null));

会产生以下结果:http://i.imgur.com/JKeF4.png

我非常喜欢这种外观,但我不想显示堆栈跟踪。我试过传递null而不是异常,但这样我得不到详细信息。

有没有办法省略堆栈跟踪? (像这样:http://i.imgur.com/kObaH.png

1 个答案:

答案 0 :(得分:3)

如果您不喜欢自动构建的详细消息(由BasicErrorPaneUI构建,请查看其getDetailsAsHtml),您可以传入自定义的消息,如:

    Exception e = new NullPointerException("something ...");
    // copied from BasicErrorPaneUI
    StringBuffer html = new StringBuffer("<html>");
    html.append("<h2>" + "Error" + "</h2>");
    html.append("<HR size='1' noshade>");
    html.append("<div></div>");
    html.append("<b>Message:</b>");
    html.append("<pre>");
    html.append("    " + e.toString());
    html.append("</pre>");
    html.append("<b>Level:</b>");
    html.append("<pre>");
    html.append("    " + ErrorLevel.SEVERE);
    html.append("</pre>");
    html.append("</html>");

    ErrorInfo errorInfo = new ErrorInfo("Error", e.getMessage(), 
            html.toString(), null, e, ErrorLevel.SEVERE, null);
    JXErrorPane.showDialog(null, errorInfo);

如果你想更频繁地这样做,我会建议一个自定义的ErrorInfo子类