87 lines
2.6 KiB
Java
87 lines
2.6 KiB
Java
package org.kne.cloud.klalb.uitool;
|
|
|
|
import javax.swing.JDialog;
|
|
import javax.swing.JFrame;
|
|
import java.awt.Dimension;
|
|
import java.awt.TextArea;
|
|
import java.awt.BorderLayout;
|
|
import java.awt.Panel;
|
|
import java.awt.Window;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JScrollPane;
|
|
import javax.swing.JTextArea;
|
|
import javax.swing.SwingConstants;
|
|
|
|
import org.kne.cloud.network.klalb.ui.UIEnv;
|
|
|
|
import javax.swing.ImageIcon;
|
|
import java.awt.Label;
|
|
import java.awt.Color;
|
|
import java.awt.Font;
|
|
import java.awt.TextField;
|
|
import java.io.PrintWriter;
|
|
import java.io.StringWriter;
|
|
import java.util.Random;
|
|
|
|
public class CrashReport extends JDialog{
|
|
private JLabel name;
|
|
private TextField type;
|
|
private JTextArea stack;
|
|
public CrashReport(Window parent ,boolean modal) {
|
|
super(parent);
|
|
setModal(modal);
|
|
setTitle("错误");
|
|
setIconImage(UIEnv.getIcon());
|
|
setSize(500, 400);
|
|
setLocationRelativeTo(null);
|
|
stack = new JTextArea();
|
|
stack.setEditable(false);
|
|
getContentPane().add(new JScrollPane(stack), BorderLayout.CENTER);
|
|
|
|
Panel panel = new Panel();
|
|
panel.setPreferredSize(new Dimension(500, 100));
|
|
getContentPane().add(panel, BorderLayout.NORTH);
|
|
panel.setLayout(null);
|
|
|
|
JLabel lblNewLabel = new JLabel("");
|
|
lblNewLabel.setIcon(new ImageIcon(CrashReport.class.getResource("/assets/error.jpg")));
|
|
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
|
|
lblNewLabel.setBounds(10, 10, 80, 80);
|
|
panel.add(lblNewLabel);
|
|
|
|
name = new JLabel("");
|
|
name.setFont(new Font("宋体", Font.PLAIN, 30));
|
|
name.setForeground(Color.RED);
|
|
name.setBounds(96, 10, 378, 33);
|
|
panel.add(name);
|
|
|
|
type = new TextField();
|
|
type.setEditable(false);
|
|
type.setBounds(96, 67, 378, 23);
|
|
panel.add(type);
|
|
|
|
fny = new JLabel("...?");
|
|
fny.setFont(new Font("MS Song", Font.PLAIN, 10));
|
|
getContentPane().add(fny, BorderLayout.SOUTH);
|
|
}
|
|
String []s=new String[]{"鎴戜滑鍥㈤槦鍙湁涓�涓▼搴忓憳",
|
|
"鎯虫洿鏂帮紝娌¢棬",
|
|
"鎴戜滑鐨勬湇鍔″櫒鐪熺殑鏄笓涓氣�滃埌瀹垛�濅簡",
|
|
"杩炴帴宸蹭涪澶憋細涓嶅幓鍋氬惎鍔ㄥ櫒灏卞幓濂宠锛屼笉鍘诲コ瑁呭氨鍘诲仛鍚姩鍣�",
|
|
"鍦熻眴鏈嶅姟鍣ㄥ張鍙戣娊浜�"
|
|
};
|
|
private JLabel fny;
|
|
public void report(Throwable e,String t){
|
|
e.printStackTrace();
|
|
name.setText(t);
|
|
type.setText(e.getClass().getName());
|
|
StringWriter sw=new StringWriter();
|
|
PrintWriter pw=new PrintWriter(sw);
|
|
e.printStackTrace(pw);
|
|
pw.close();
|
|
stack.setText(sw.toString());fny.setText(s[new Random().nextInt(s.length)]);
|
|
setVisible(true);
|
|
|
|
}
|
|
}
|