1 package charactermanaj.util;
3 import java.awt.Component;
4 import java.awt.Dimension;
5 import java.io.PrintWriter;
6 import java.io.StringWriter;
7 import java.util.logging.Level;
8 import java.util.logging.Logger;
10 import javax.swing.JOptionPane;
11 import javax.swing.JScrollPane;
12 import javax.swing.JTextArea;
19 public final class ErrorMessageHelper {
24 private static final Logger logger = Logger.getLogger(ErrorMessageHelper.class.getName());
27 private ErrorMessageHelper() {
32 * 例外が発生したことを示すダイアログを表示し、ログに記録する.<br>
33 * @param parent ダイアログを表示する親、null可
34 * @param ex 例外、nullの場合はなにもせずに戻る.
36 public static void showErrorDialog(Component parent, Throwable ex) {
42 logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
45 JTextArea textArea = new JTextArea();
47 StringWriter sw = new StringWriter();
48 PrintWriter pw = new PrintWriter(sw);
49 ex.printStackTrace(pw); // 例外のコールスタックをパネルに表示できるように出力
52 textArea.setText(sw.toString());
54 textArea.setSelectionStart(0);
55 textArea.setSelectionEnd(0);
56 textArea.setEditable(false);
58 JScrollPane scr = new JScrollPane(textArea);
59 scr.setPreferredSize(new Dimension(400, 150));
60 scr.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
61 scr.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
64 JOptionPane.showMessageDialog(parent, scr, "ERROR", JOptionPane.ERROR_MESSAGE);