Files
KLALB/src/org/kne/cloud/klalb/uitool/CrashReport.java
T
2025-04-24 10:16:38 +08:00

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);
}
}