我有一个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);
}
}
答案 0 :(得分:0)
但他们都占用了一半的空间
BoxLayout将为每个组件分配额外的空间,直到组件的最大大小。
顶栏应该恰好占据我给它的大小,内容小组应该占用其余的,
然后不要使用BoxLayout。 JFrame
内容窗格的默认布局管理器是BorderLayout
,它完全符合您的要求。
阅读How to Use BorderLayout上Swing教程中的部分,了解更多信息和工作示例。
答案 1 :(得分:-1)
您应该使用 setSize 而不是 setPreferredSize 。
答案 2 :(得分:-1)
我的错误是我没有设置两个面板的preferredSize,如果我设置了contentPane的大小以及它的工作。