问题描述
||
我正在使用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。