我看How To Use BoxLayout文件,其中明确表示,如何使用BoxLayout将组件拉伸到整行上?
如果没有什么组件的最大宽度?在这种情况下,如果所有组件都具有相同的X对齐,则所有组件均为 ,其宽度与其容器一样宽。
我们假设我们将大量JButton
实例添加到JPanel
。如果这些按钮的最大宽度是无并且我们在所有这些按钮上调用setAlignmentX(Component.LEFT_ALIGNMENT)
- 然后这些按钮中的每一个都应该在整个行上延伸。该文档甚至使用下面的图片说明了这一点。
我不能得到这个工作!
我试过在按钮上试过setMaximumSize(null
)和setMaximumSize(new Dimension(-1,-1))
和setMaximumSize(new Dimension(0,0))
,但没有给我描述的行为。
如果没有什么组件的最大宽度:
什么excactly当它说没有文件的意思
什么是无最大宽度?
我已经能够生产的最好的是下面。阅读文档我会期望按钮应该能够在整个行上展开。我知道我也可以使用其他布局管理器,但我希望通过BoxLayout
来实现这一点(授予文档是正确的/我已经理解了文档的权利)。
public class CustomList extends JPanel {
private final Box box = Box.createVerticalBox();
public CustomList() {
for (int i = 0; i < 10; i++) {
JButton b = new JButton("Button item" + i);
//b.setMaximumSize(new Dimension(0,0));
b.setAlignmentX(Component.LEFT_ALIGNMENT);
box.add(b);
}
setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
add(box, BorderLayout.CENTER);
}
public static void main(String[] args) {
CustomList l = new CustomList();
l.setSize(200, 200);
l.setBackground(Color.red);
JFrame frame = new JFrame("Vertical Box");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(l, BorderLayout.CENTER);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
我看到,如果我用JPanel替换JButton - 不管是否设置了最大大小 - 那么每个JPanel将跨越整个行。 – sbrattla