JOptionPane中的文本换行?我正在使用以下代码在我的swing应用程序中显示错误消息try {
...} catch (Exception exp) {
JOptionPane.showMessageDialog(this, exp.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);}错误对话框的宽度很长,具体取决于消息。有没有办法包装错误信息?
2 回答
RISEBY
TA贡献1856条经验 获得超5个赞
A 默认JOptionPane
使用a JLabel
来显示文本。标签将格式化HTML。在CSS中设置最大宽度。
JOptionPane.showMessageDialog( this, "<html><body><p style='width: 200px;'>"+exp.getMessage()+"</p></body></html>", "Error", JOptionPane.ERROR_MESSAGE);
更一般地说,请参阅如何在Swing组件中使用HTML,以及使用HTML的JLabel
这个简单示例。
沧海一幻觉
TA贡献1824条经验 获得超5个赞
将您的消息添加到可以换行的文本组件,例如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); } }}));
添加回答
举报
0/150
提交
取消