2012-08-13 198 views
1

在寻找一种简单的方式来显示错误目前我使用JXErrorPane没有堆栈跟踪

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

导致以下我发现SwingX

http://i.imgur.com/JKeF4.png

我真的很喜欢这个样子,但我不想显示堆栈跟踪。我试过传递null而不是异常,但这种方式我没有得到细节。

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

+0

嗯......不太明白你的问题:如果不是堆栈跟踪,_do_你想显示什么? – kleopatra 2012-08-13 10:45:37

+0

对不起,基本上我想隐藏堆栈跟踪的痕迹部分,如果有意义http://i.imgur.com/kObaH.png – Shishigami 2012-08-13 10:49:41

回答

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子

+0

非常感谢!这正是我想要的。 – Shishigami 2012-08-13 12:37:33

+0

@Sishishami很高兴帮助 - 你可能会考虑接受这个答案:-) – kleopatra 2012-08-21 15:41:30