如何将组件堆叠在另一个组件上,以保持其垂直尺寸?

我有一个父级JPanel,其子级组件堆叠在一起。但是,它们并没有按照我的意愿调整大小:

This is how it should be

This is what I get

代码:

public class LayoutTest extends JFrame {

public LayoutTest() {
    setVisible(true);
    setSize(new Dimension(500,500));
    getcontentPane().setLayout(new BoxLayout(getcontentPane(),BoxLayout.PAGE_AXIS));

    for (int i = 0; i < 2; i++) {
        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(500,50));
        panel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        panel.setBackground(Color.red);
        getcontentPane().add(panel);
    }

}

public static void main(String[] args) {
    LayoutTest layoutTest = new LayoutTest();
}

}

问题主要是组件在不应该垂直调整大小的情况下。我希望他们保持垂直尺寸,但他们不会。我已经尝试了多种布局GridBagLayout,FlowLayout,BoxLayout,但它们都不起作用。

我最好的尝试是使用BoxLayout:

简单地:container.setLayout(new BoxLayout(container,BoxLayout.PAGE_AXIS); 然后container.add(component1) ...

感谢您的帮助。

camickr的工作解决方案:

public class LayoutTest extends JFrame {

public LayoutTest() {
    setVisible(true);
    setSize(new Dimension(500,500));
    JPanel container = new JPanel();
    container.setLayout(new BoxLayout(container,50));
        panel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        panel.setBackground(Color.red);
        container.add(panel,BorderLayout.PAGE_START);
    }
    getcontentPane().add(container,BorderLayout.NORTH);

}

public static void main(String[] args) {
    LayoutTest layoutTest = new LayoutTest();
}

}

dangdangheta 回答:如何将组件堆叠在另一个组件上,以保持其垂直尺寸?

如果有可用空间,则BoxLayout会将组件扩展到最大大小。

将面板添加到框架中时,而不是将面板添加到CENTER中以使面板变大,而是将其添加到PAGE_START中,该页面将尊重高度:

baz

另一种解决方案是使用盒子布局将面板包装到另一个面板中。

JPanel north = new JPanel();
north.setLayout( new BoxLayout(north,BoxLayout.PAGE_AXIS) );
// add loop to add panels to the "north" panel

add(north,BorderLayout.PAGE_START);
本文链接:https://www.f2er.com/3020171.html

大家都在问