0

我有两个想要排列的 JPanel,一个在另一个之上,在一个更大的 JPanel 内。“panel_controls”覆盖 .getPreferredSize()。代码:

public final class GUIPanelMain extends JPanel {
    //...

    private JPanel panel_images;
    private JPanel panel_controls;

    //...

    private void addPanels() {
        new BoxLayout(this,BoxLayout.Y_AXIS); //Bleh!  Still is horizontal!
        this.add(panel_images);
        this.add(panel_controls);
    }

    //...
}

不幸的是,布局无论如何都是水平设置的。只有当我调整 JPanel 的大小时,组件才会全部放在正确的位置(在这种情况下是垂直的)。

我在文档中阅读了以下内容:“BoxLayout 尝试使列中的所有组件与最宽的组件一样宽。如果失败,它将根据它们的 X 对齐方式水平对齐它们”

那么失败的条件是什么呢?如何强制它垂直对齐?

谢谢,

4

1 回答 1

3

尝试

this.setLayout( new BoxLayout(this, BoxLayout.Y_AXIS));

您基本上是在创建一个未使用且未引用的 BoxLayout 新实例。

于 2011-10-03T20:34:42.913 回答