我有一个将内容窗格设置为jpanel的jframe,它具有boxlayout,还有两个jpanels,一个是"顶级栏",另一个是我想工作的内容和。顶级条应占用我给它的大小,并且内容面板应占用其余的,但是它们都占据了一半的空间。我在做什么错?
我的课:
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);
}
}
,但他们都占据了一半的空间
BoxLayout将为每个组件分配额外的空间,直至最大尺寸。
顶级栏应精确地占据我给它的大小,内容面板应占用其余的,
然后不要使用boxlayout。JFrame
的内容窗格的默认布局管理器是BorderLayout
,它正是您想要的。
阅读有关如何使用BorderLayout以获取更多信息和工作示例的Swing教程中的部分。
您应该使用 setSize 而不是 setPreferredsize 。
我的错误是我没有设置两个面板的首选尺寸,如果我设置了contentpane的大小,则它将工作。