Swing 支持自动多行的消息对话框?

Swing 支持自动多行的消息对话框?,swing,Swing,我正在使用JOptionPane.showMessageDialog(和showConfirmDialog和其他方法) 这个方法的问题在于它不格式化文本。 如果我传递很长的消息,它将显示在一行中(可能比屏幕分辨率更宽)。 当然,我可以在消息中使用\n,但这对我来说是额外的工作 我需要一个可以自动格式化文本的对话框。您只需要使用一个普通的JDialog,里面有一个JTextArea,比如: JDialog editDialog = new JDialog(); JTextArea textArea

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


我需要一个可以自动格式化文本的对话框。

您只需要使用一个普通的
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);
我想要一个对话框,它会自动为我格式化文本

使用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);

            }
        });
    }
}
import java.awt.*;
导入javax.swing.*;
公共类标签宽度测试{
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
公开募捐{
String title=“”
+“你喜欢我吗?”
+“这是一条可以缠绕的长字符串。”
+“我们想要的效果是多行标签。”;
JLabel textLabel=新的JLabel(标题);
showMessageDialog(null,textLabel);
}
});
}
}

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

将所有
\n
替换为

\n\n
替换为

我丢失了“”符号。如果字符串包含此类符号-它们将不会显示在对话框中


对于
,将它们转换为HTML等价物,
&

嗯,它只适用于单行字符串。但如果字符串已经是多行(包含一个或多个\n),则只格式化字符串的第一行。如何格式化所有行?另一个问题-我丢失“”符号。如果字符串包含这样的符号,它们将不会显示在对话框中,这似乎很复杂。我更喜欢创建自己的对话框,里面有可滚动的区域。LOL-这是2天前提供给你的!然后,我需要添加“是/否/取消”按钮,手动处理等等。如果可能的话,我更喜欢使用
JOptionPane
或其他方法。。。