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

问题描述

|| 我正在使用JFrame来显示一个带有一些文本和2个按钮的消息框。如何根据框的大小自动包装文本? 这是我当前的代码:
        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);
我在某处读到那个电话
  testLabel.setPreferredSize(new Dimension(1,1)); 
会导致我想要的换行行为,但这只会导致文本根本不显示。     

解决方法

        您可以将文本放在
JTextArea
中,然后在
JTextArea
上分别调用
setLineWrap(true)
setWrapStyleWord(true)
。如果您希望它看起来更像JLabel风格,则只需根据自己的喜好更改
JTextArea
的颜色设置即可。 编辑1 还有另一件事可能起作用:考虑让持有人
JPanel
使用
BorderLayout
JPanel addPanel2 = new JPanel(new BorderLayout()); //!! added BorderLayout
这样添加的ѭ10将会填充ѭ11。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...