具有自动多线支持的消息对话框?

时间:2011-06-24 14:58:54

标签: swing

我正在使用JOptionPane.showMessageDialog(以及showConfirmDialog和其他方法) 此方法的问题 - 它不格式化文本。 如果我传递了很长的消息 - 它将在一行中显示(可能比屏幕分辨率更宽)。 当然我可以在消息中使用\n,但对我来说这将是额外的工作。

我想要一个自动为我格式化文本的对话框。

2 个答案:

答案 0 :(得分:6)

  

我想要一个自动为我格式化文本的对话框。

使用HTML和CSS来限制宽度。

import java.awt.*;
import javax.swing.*;

public class LabelWidthTest {

    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                String title = "<html><body style='width: 200px; padding: 5px;'>"
                    + "<h1>Do U C Me?</h1>"
                    + "Here is a long string that will wrap.  "
                    + "The effect we want is a multi-line label.";

                JLabel textLabel = new JLabel(title);
                JOptionPane.showMessageDialog(null, textLabel);

            }
        });
    }
}

  

但是如果string已经是多行(包含一个或多个\ n),它只格式化字符串的第一行。

将所有\n替换为<br>&amp; \n\n<p>

  

我输了“&lt;”和“&gt;”符号。如果string包含这样的符号 - 它们将不会显示在对话框中

<&amp; >,将它们翻译为HTML等价物&lt;&amp; &gt;

答案 1 :(得分:2)

您只想在其中使用一个普通的JDialog JTextArea,例如:

JDialog editDialog = new JDialog();
JTextArea textArea = new JTextArea(myText);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
JScrollPane areaScrollPane = new JScrollPane(textArea);
editDialog.add(areaScrollPane);