Java 我的swing对话框在Mac和Windows上以不同的方式显示长字符串

Java 我的swing对话框在Mac和Windows上以不同的方式显示长字符串,java,dialog,Java,Dialog,我需要有一个很长的描述性对话框在我的程序的一部分,它显示在mac和windows不同。在mac电脑上,word似乎将文本包装成3行或4行,但在PC上,它只是创建了一个很长的对话框。下面是一些显示我的问题的代码: public class Test extends JFrame{ import javax.swing.JFrame; import javax.swing.JOptionPane; public class Test extends JFrame{ private String s

我需要有一个很长的描述性对话框在我的程序的一部分,它显示在mac和windows不同。在mac电脑上,word似乎将文本包装成3行或4行,但在PC上,它只是创建了一个很长的对话框。下面是一些显示我的问题的代码:

public class Test extends JFrame{

import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Test extends JFrame{
private String suggestion = "eee eee eeee eeee eeeerr rrrrr rrrrrrrr rrrrrr " +
        "rrrrrr rrrrrrrrr  rrrrrr rrrrr tttttt ttttttttttt ttttt tttttttttt ttt" +
        " tttt tttttt ttttttttttt reroew uewurkpe jwrkl;ejr kejk ejrk;jewr;jeklr " +
        "jk jre;wlj;ewjr;ej lejrlkejlkejlkjerl  ejlrj kleklr jekl jlek " +
        "rjklejrklejrklekl ";
public void showDialog()
{
           JOptionPane.showMessageDialog(this,
                                  suggestion,
                                  "title",
                                  JOptionPane.INFORMATION_MESSAGE,
                                  null);
}
public static void main(String [] args)
{
    Test test = new Test();
    test.showDialog();
}
}

当我在Windows上运行它时,它只是在一个长对话框中创建了一行巨大的文本,但在mac上,它创建了多行大小合适的对话框

JOptionPane组件具有一个只读属性(MaxCharactersPerLineCount),用于每行的最大字符数。默认情况下,这是Integer.MAX_值。通过子类化JOptionPane,可以覆盖此设置。更改此设置允许组件在消息非常长时自动换行


如果您希望自己控制自动换行,请将字符串数组传递给showMessageDialog。每个字符串将显示在单独的一行上。这适用于任何平台

 private String s1 = "eee eee eeee eeee eeeerr rrrrr rrrrrrrr rrrrrr";
 private String s2 = "rrrrrr rrrrrrrrr  rrrrrr rrrrr tttttt ttttttttttt ttttt tttttttttt ttt";
 private String s3 = "tttt tttttt ttttttttttt reroew uewurkpe jwrkl;ejr kejk ejrk;jewr;jeklr";
 private String s4 = "rjklejrklejrklekl";
 private String s5 = "eee eee eeee eeee eeeerr rrrrr rrrrrrrr rrrrrr";
 private String[] suggestion = new String[] {s1, s2, s3, s4, s5};
 public void showDialog()
{
       JOptionPane.showMessageDialog(this,
                              suggestion,
                              "title",
                              JOptionPane.INFORMATION_MESSAGE,
                              null);
}

有趣的是,它在mac和pc上的不同之处在于,Swing将在mac和windows/linux之间做到这一点。在之前的一个项目中,我为在mac电脑上正常工作付出了巨大的努力,尤其是在文本显示方面。我并不奇怪它的工作原理不同。