为了账号安全,请及时绑定邮箱和手机立即绑定

JOptionPane中的文本换行?

JOptionPane中的文本换行?

达令说 2019-07-23 15:23:48
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这个简单示例


查看完整回答
反对 回复 2019-07-23
?
沧海一幻觉

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


查看完整回答
反对 回复 2019-07-23
  • 2 回答
  • 0 关注
  • 1227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信