我正在使用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));
会导致我想要的包装行为,但这只会导致文本根本不显示。
答案 0 :(得分:3)
您可以将文字放在JTextArea
中,并在setLineWrap(true)
上致电setWrapStyleWord(true)
和JTextArea
。如果您希望它看起来更像JLabel-ish,那么只需根据自己的喜好更改JTextArea
的颜色设置。
编辑1
另一件可行的方法是:考虑暂停JPanel
使用BorderLayout
:
JPanel addPanel2 = new JPanel(new BorderLayout()); //!! added BorderLayout
这样添加的JLabel
将填充addPanel2
。