我想在 JPanel 内垂直堆叠一些 JComponent,以便它们堆叠在顶部,而任何额外的空间都在底部。我正在使用 BoxLayout。每个组件都将包含一个 JTextArea,它应该允许文本在必要时换行。所以,基本上,我希望这些组件中的每一个的高度都是显示(可能是包装的)文本所需的最小值。
这是我正在做的包含代码示例:
import javax.swing.*;
import java.awt.*;
public class TextAreaTester {
public static void main(String[] args){
new TextAreaTester();
}
public TextAreaTester(){
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel,BoxLayout.PAGE_AXIS));
panel.setPreferredSize(new Dimension(100,400));
for(int i = 0; i<3; i++){
JPanel item = new JPanel(new BorderLayout());
JTextArea textarea = new JTextArea("this is a line of text I want to wrap if necessary");
textarea.setWrapStyleWord(true);
textarea.setLineWrap(true);
textarea.setMaximumSize( textarea.getPreferredSize() );
item.add(textarea,BorderLayout.NORTH);
panel.add(item);
}
panel.add(Box.createGlue());
frame.add(panel);
frame.setVisible(true);
frame.pack();
}
}
子 JPanel 正在扩展以填充垂直空间。我尝试使用胶水,因为我认为这就是胶水的用途,但它似乎什么也没做。有什么帮助吗?
注意:我发现了一些看起来几乎相同的问题,但没有一个问题有我可以应用的答案。