次のコードを使用して、swingアプリケーションにエラーメッセージを表示しています
try {
...
} catch (Exception exp) {
JOptionPane.showMessageDialog(this, exp.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
メッセージによっては、エラーダイアログの幅が長くなります。エラーメッセージを折り返す方法はありますか?
JOptionPane
はデフォルトでJLabel
を使用してテキストを表示します。ラベルはHTMLをフォーマットします。 CSSで最大幅を設定します。
JOptionPane.showMessageDialog(
this,
"<html><body><p style='width: 200px;'>"+exp.getMessage()+"</p></body></html>",
"Error",
JOptionPane.ERROR_MESSAGE);
より一般的には、 SwingコンポーネントでHTMLを使用する方法 、およびこの単純な JLabel
でHTMLを使用する例 を参照してください。
JEditorPane
などの折り返し可能なテキストコンポーネントにメッセージを追加し、エディターペインをmessage
としてJOptionPane
に指定します。 エディターペインとテキストペインの使用方法 および 方法例として、ダイアログの作成 。
補遺:折り返しの代わりに、以下に示すように、スクロールペインでの行指向のアプローチを検討してください。
f.add(new JButton(new AbstractAction("Oh noes!") {
@Override
public void actionPerformed(ActionEvent action) {
try {
throw new UnsupportedOperationException("Not supported yet.");
} catch (Exception e) {
StringBuilder sb = new StringBuilder("Error: ");
sb.append(e.getMessage());
sb.append("\n");
for (StackTraceElement ste : e.getStackTrace()) {
sb.append(ste.toString());
sb.append("\n");
}
JTextArea jta = new JTextArea(sb.toString());
JScrollPane jsp = new JScrollPane(jta){
@Override
public Dimension getPreferredSize() {
return new Dimension(480, 320);
}
};
JOptionPane.showMessageDialog(
null, jsp, "Error", JOptionPane.ERROR_MESSAGE);
}
}
}));