我有这样的代码:
JPanel myPanel = new JPanel();
myPanel.setLayout(new BoxLayout(myPanel, BoxLayout.Y_AXIS));
JButton button = new JButton("My Button");
JLabel label = new JLabel("My label!!!!!!!!!!!");
myPanel.add(button);
myPanel.add(label);
通过这种方式,我获得了它们之间没有距离的元素。我的意思是,“顶部”元素总是触及“底部”元素。我该怎么改变它?我希望我的元素之间有一些分离?
我想在我的元素之间添加一些“中间”JPanel(有一些大小)。但我不认为这是一种获得理想效果的优雅方式。请有人帮助我吗?
答案 0 :(得分:15)
JPanel myPanel = new JPanel();
myPanel.setLayout(new BoxLayout(myPanel, BoxLayout.Y_AXIS));
JButton button = new JButton("My Button");
JLabel label = new JLabel("My label!!!!!!!!!!!");
myPanel.add(button);
myPanel.add(Box.createVerticalStrut(20));
myPanel.add(label);
将是实现目标的一种方式。
答案 1 :(得分:5)
如果您肯定打算使用BoxLayout
来布局面板,那么您应该查看How to Use BoxLayout Sun Learning Trail,特别是Using Invisible Components as Filler部分。简而言之,使用BoxLayout
,您可以创建特殊的不可见组件,充当其他组件之间的间隔符:
container.add(firstComponent);
container.add(Box.createRigidArea(new Dimension(5,0)));
container.add(secondComponent);
答案 2 :(得分:3)
您可能需要考虑使用GridLayout而不是BoxLayout,它具有Hgap和Vgap属性,可让您指定组件之间的常量分隔。
GridLayout layout = new GridLayout(2, 1);
layout.setVgap(10);
myPanel.setLayout(layout);
myPanel.add(button);
myPanel.add(label);
答案 3 :(得分:1)
使用Box
类作为隐形填充元素。这就是Sun建议您这样做的方式。