在BoxLayout中调整JPanel的大小

时间:2016-12-28 12:04:35

标签: java swing jpanel layout-manager boxlayout

我有一个JFrame,它将内容窗格设置为JPanel,它有一个BoxLayout和另外两个JPanel,一个是"顶部栏"另一个是我想要合作的内容。顶部栏应该恰好占据我给它的大小,内容面板应该占用其余部分,但是它们都占用了一半的空间。我做错了什么?

我的课程:

public class TopBar extends JPanel
{
    public TopBar()
    {
        setLayout(new FlowLayout());
        setPreferredSize(new Dimension((int) (MyFrame.WIDTH / MyFrame.COMPRESSION), MyFrame.TOPBAR));
        add(new JButton("something"));
    }
}


public class ContentPanel extends JPanel
{   
    public ContentPanel()
    {
        setLayout(null);
    }
}

public class MyJpanel extends JPanel
{
    private JPanel topPanel;
    private JPanel contentPanel;

    public MyJpanel()
    {
        this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

        topPanel = new TopBar();
        contentPanel = new ContentPanel();

        add(topPanel);
        add(contentPanel);
    }
}

3 个答案:

答案 0 :(得分:0)

  

但他们都占用了一半的空间

BoxLayout将为每个组件分配额外的空间,直到组件的最大大小。

  

顶栏应该恰好占据我给它的大小,内容小组应该占用其余的,

然后不要使用BoxLayout。 JFrame内容窗格的默认布局管理器是BorderLayout,它完全符合您的要求。

阅读How to Use BorderLayout上Swing教程中的部分,了解更多信息和工作示例。

答案 1 :(得分:-1)

您应该使用 setSize 而不是 setPreferredSize

答案 2 :(得分:-1)

我的错误是我没有设置两个面板的preferredSize,如果我设置了contentPane的大小以及它的工作。