Java BoxLayout给出了错误的结果

时间:2011-10-03 20:30:08

标签: java swing alignment jpanel boxlayout

我有两个我希望安排的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对齐水平对齐它们”

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

谢谢,

1 个答案:

答案 0 :(得分:3)

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

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