一帧中添加多个具有不同大小的面板

时间:2019-10-25 15:59:27

标签: java swing jpanel layout-manager

我正在尝试向框架中添加更多面板,但是与我添加的第一个面板相比,该程序似乎忽略了所有其他面板。我应该如何添加面板?

我检查了其他人的问题及其答案,但似乎没有一个是我的解决方案。

frame = new JFrame("Hey");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel mid = new JPanel(new GridLayout(7,7));
JPanel top = new JPanel();

frame.add(top);
frame.add(mid);
frame.pack();
frame.setVisible(true);

程序将忽略“顶部”面板以及我添加到其中的按钮。

1 个答案:

答案 0 :(得分:1)

来自JFrame documentation

  

默认内容窗格上将设置一个BorderLayout管理器。

因此,您应该使用BorderLayout区域,以便将JPanels添加到JFrame的内容窗格中,如下所示:

frame.add(top, BorderLayout.NORTH);
frame.add(mid, BorderLayout.CENTER);

否则,BorderLayout将默认为将所有内容添加到CENTER区域:

  

为方便起见,BorderLayout将字符串说明的缺失解释为与常量CENTER相同:

Panel p2 = new Panel();
p2.setLayout(new BorderLayout());
p2.add(new TextArea());  // Same as p.add(new TextArea(), BorderLayout.CENTER);

,您将只看到最后添加的JPanel,因为:

  

每个区域最多只能包含一种成分