【发布时间】:2011-07-25 19:21:16
【问题描述】:
我正在编写一个类,我希望能够将未知数量的面板添加到垂直 BoxLayout 中的另一个 JPanel。这些面板每个都包含一个作为标题的标签和另一个面板。我希望所有添加的面板都位于面板的顶部(在本例中为 Gui),所以我在底部添加了垂直胶水。在我需要重做一些代码以便将主面板(由 gui 表示)放在滚动窗格中之前,我的一切都按预期工作。为了简单起见,我能够在下面的代码中复制我的问题。运行时,您会注意到胶水不会占用空白空间,而是在其他面板之间分开。我已经为 jframe 设置了一个大小,而不是使用 .pack() 来说明这一点。
public class Gui extends JFrame {
public Gui() {
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));
getContentPane().add(new Panel());
getContentPane().add(new Panel());
getContentPane().add(new Panel());
getContentPane().add(new Panel());
getContentPane().add(Box.createVerticalGlue());
}
public class Panel extends JPanel{
public Panel(){
this.setLayout(new BorderLayout());
this.add(new JLabel("Title"), BorderLayout.NORTH);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
this.add(panel);
panel.add(new JButton("button"));
}
}
public static void main (String[] args){
Gui g = new Gui();
g.setSize(240, 320);
g.setLocationRelativeTo(null);
g.setVisible(true);
g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
【问题讨论】:
-
您希望它们如何布局?所以它们在 GUI 顶部水平相邻?
-
没有垂直布局(boxlayout.pageaxis),但我希望所有的空步都在底部而不是它们之间,这就是我添加胶水的原因,但你可以看到胶水对我没有多大好处出于某种原因