Java:文本未在JFrame对话框中换行

Java:文本未在JFrame对话框中换行,java,swing,jframe,Java,Swing,Jframe,我使用JFrame来显示一个消息框,其中包含一些文本和两个按钮。如何根据框的大小自动换行文本 以下是我当前的代码: dialogFrame = new JFrame(); JButton newButton = new JButton("New"); newButton.addActionListener(new newUploadAction()); JButton resumeButton = new JButton("Re

我使用JFrame来显示一个消息框,其中包含一些文本和两个按钮。如何根据框的大小自动换行文本

以下是我当前的代码:

        dialogFrame = new JFrame();

        JButton newButton = new JButton("New");
        newButton.addActionListener(new newUploadAction());

        JButton resumeButton = new JButton("Resume");
        resumeButton.addActionListener(new resumeUploadAction());

        //dialogFrame.setUndecorated(true);

        JPanel addPanel = new JPanel();

        JPanel addPanel2 = new JPanel();

        addPanel.add(newButton);
        addPanel.add(resumeButton);

        String text = "<html><p>A previous control file exists for this file. ";
        text += "Would you like to initiate a new transfer or resume the previous one?</p></html>";

        JLabel testLabel = new JLabel(text);

        //testLabel.setPreferredSize(new Dimension(1, 1)); 

        addPanel2.add(testLabel);


        Container content = dialogFrame.getContentPane();


        //content.setBackground(Color.white);
        content.setLayout(new BoxLayout(content, BoxLayout.PAGE_AXIS)); 

        content.add(addPanel2);
        content.add(addPanel);


        dialogFrame.setSize(200,200);
        dialogFrame.setVisible(true);
        dialogFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

将导致我想要的包装行为,但这只会导致文本根本不显示。

您可以将文本放置在
JTextArea
中,并在
JTextArea
上调用
setLineWrap(true)
setWrapStyleWord(true)
。如果您想让它看起来更像JLabel,那么只需根据您的喜好更改
JTextArea
的颜色设置即可

编辑1

另一件可能工作的事情:考虑持有“<代码> jPoCTs/COD> >使用<代码>边界布局< /代码>:

JPanel addPanel2 = new JPanel(new BorderLayout()); //!! added BorderLayout

因此,添加的
JLabel
将填充
addPanel2

您可以将文本放置在
JTextArea
中,并在
JTextArea
上调用
setLineWrap(true)
setWrapStyleWord(true)
。如果您想让它看起来更像JLabel,那么只需根据您的喜好更改
JTextArea
的颜色设置即可

编辑1

另一件可能工作的事情:考虑持有“<代码> jPoCTs/COD> >使用<代码>边界布局< /代码>:

JPanel addPanel2 = new JPanel(new BorderLayout()); //!! added BorderLayout

因此添加的
JLabel
将填充
addPanel2

可能重复-可能重复-+1,用于提及
JTextArea
解决方案和酷名,但是另一种选择是嵌入
HTML
@mre:
HTML
的问题是您需要指定换行符的位置,而我认为OP希望换行符的位置取决于GUI的大小。@HFOE:“HTML的问题是您需要指定换行符的位置..”一点CSS都没有。例如,
。中的输出限制为600px宽度。您完全正确,但我想您可以使用提及的@Andrew Thompson周围的工作。+1用于提及
JTextArea
解决方案和酷名,但是另一种选择是嵌入
HTML
@mre:
HTML
的问题是您需要指定换行符的位置,而我认为OP希望换行符的位置取决于GUI的大小。@HFOE:“HTML的问题是您需要指定换行符的位置..”一点CSS都没有。例如,
。中的输出限制为600px宽度。您完全正确,但我想您可以使用@Andrew Thompson提到的工作。