Java:文本未包装在JFrame对话框中

时间:2011-06-01 02:36:21

标签: java swing 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)); 

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

1 个答案:

答案 0 :(得分:3)

您可以将文字放在JTextArea中,并在setLineWrap(true)上致电setWrapStyleWord(true)JTextArea。如果您希望它看起来更像JLabel-ish,那么只需根据自己的喜好更改JTextArea的颜色设置。

编辑1

另一件可行的方法是:考虑暂停JPanel使用BorderLayout

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

这样添加的JLabel将填充addPanel2