Queria saber se dá pra fazer uma caixa de diálogo personalizada (tipo showMessageDialog).
Mas eu queria que ela tivesse 2 botões (e uma figurinha de erro clarro :D):
botão OK
botão Detalhes>>
O botão OK, fecha o diálogo.
O botão Detalhes>> , exibe abaixo do nome do erro, a stack trace.(somente para o caso de o usuário clicar neste botão)
É claro que dá; é só criar um JDialog com esses botões e tomar um pouco de cuidado, porque você terá de mudar o tamanho do JDialog quando clicar o botão "Detalhes >>" (que quando estiver ativo, é óbvio, vai ficar com o texto "Detalhes <<". )
É muito útil - ponha o stack trace. Exemplo:
Pensei em fazer assim: a classe DialogoErro (JDialog) ia se virar com a Exception que eu estou passando.
public static void main(String args[]){
// aqui eu faço a aplicação falhar
try{
double f = Double.parseDouble("1,8");
}catch(Exception e){
new DialogoErro(null,true,"titulo","mensagem", e);
}
}
A classe do Dialogo é essa:
privateExceptione;//ConstrutorpublicDialogoErro(java.awt.Frameparent,booleanmodal,Stringtitle,Stringmessage,Exceptione){
super(parent,modal);initComponents();setTitle(title);labelMensagem.setText(message);setVisible(true);this.e=e; //aqui ele seta a exception que recebe para que os outros métodos possam "enxergar"
}
//quandoobotãodetalheséclicadoprivatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){
Stringtexto="";StackTraceElement[]pilha=e.getStackTrace(); texto+=e.getMessage()+"\n";for(StackTraceElementelemento:pilha){
texto+=elemento+"\n";}
//nãofizaindaestaparte,coloqueiprovisoriamenteJOptionPane.showMessageDialog(null,texto);}