在一个框架中添加多个不同尺寸的面板
Adding Multiple Panels with Different Sizes in One Frame
我正在尝试向框架中添加更多面板,但程序似乎忽略了除我添加的第一个面板之外的所有其他面板。我应该如何添加面板?
我已经检查了其他人的问题和他们的答案,但其中 none 似乎是我的解决方案。
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);
程序会忽略 "top" 面板以及我添加到其中的按钮。
The default content pane will have a BorderLayout manager set on it.
所以您应该使用 BorderLayout 区域来将 JPanel 添加到 JFrame 的内容窗格中,如下所示:
frame.add(top, BorderLayout.NORTH);
frame.add(mid, BorderLayout.CENTER);
否则,BorderLayout 将默认将所有内容添加到 CENTER
区域:
As a convenience, BorderLayout interprets the absence of a string specification the same as the constant CENTER:
Panel p2 = new Panel();
p2.setLayout(new BorderLayout());
p2.add(new TextArea()); // Same as p.add(new TextArea(), BorderLayout.CENTER);
您只会看到最后添加的 JPanel,因为:
Each region may contain no more than one component
我正在尝试向框架中添加更多面板,但程序似乎忽略了除我添加的第一个面板之外的所有其他面板。我应该如何添加面板?
我已经检查了其他人的问题和他们的答案,但其中 none 似乎是我的解决方案。
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);
程序会忽略 "top" 面板以及我添加到其中的按钮。
The default content pane will have a BorderLayout manager set on it.
所以您应该使用 BorderLayout 区域来将 JPanel 添加到 JFrame 的内容窗格中,如下所示:
frame.add(top, BorderLayout.NORTH);
frame.add(mid, BorderLayout.CENTER);
否则,BorderLayout 将默认将所有内容添加到 CENTER
区域:
As a convenience, BorderLayout interprets the absence of a string specification the same as the constant CENTER:
Panel p2 = new Panel(); p2.setLayout(new BorderLayout()); p2.add(new TextArea()); // Same as p.add(new TextArea(), BorderLayout.CENTER);
您只会看到最后添加的 JPanel,因为:
Each region may contain no more than one component