1

我已经制作了一个面板(它是一排按钮),并将它放在框架的底部(南),但我想在它下面添加两行(面板/子面板)(文本输入行和输出行,如果重要的话)。现在我唯一知道要做的就是声明并添加更多面板,这很好,但是当我指定 .SOUTH 时,它们会超出前一个面板的顶部。

编辑:我使用的解决方案

按照 Ted Hopp 的建议,我将原始面板(现在称为 subPanel1)以及位于原始面板(subPanel2 和 subPanel3)之上的两个新面板添加到第四个“容器面板”(bottomCotainerPanel)。因为我只有三个 subPanel,这允许我指定每个 subPanel 在 containerPanel 中的位置(使用 NORTH、CENTER、SOUTH,如果你有超过 3 个,可能需要做一些稍微不同的事情......),然后指定哪里contianerPanel 将进入框架(南)。

    subPanel1.setLayout(new GridLayout(1,6)); //Layout of subPanel1
subPanel1.add(clearButton);
subPanel1.add(customerNameLabel);
subPanel1.add(customerNameTextField);
subPanel1.add(showByNameButton);
subPanel1.add(openNewSavingsButton);
subPanel1.add(openNewCheckingButton);


subPanel2.add(sendChatTextField);
subPanel2.add(sendButton);
subPanel2.add(clearButton2);

subPanel3.add(receiveChatTextField);
subPanel3.add(nextButton);
subPanel3.add(previousButton);

bottomContainerPanel.setLayout(new GridLayout(3,1));   //Layout of Container Panel
bottomContainerPanel.add(subPanel1, BorderLayout.NORTH);
bottomContainerPanel.add(subPanel2, BorderLayout.CENTER);
bottomContainerPanel.add(subPanel3, BorderLayout.SOUTH);

tellerWindow.getContentPane().add(bottomContainerPanel, BorderLayout.SOUTH);
4

3 回答 3

4

您需要添加一个容器面板作为框架的 SOUTH 面板。容器本身应该具有您想要的底部所有内容的布局。

于 2012-10-29T17:49:13.573 回答
2

如果您只想将面板拆分为 2 个相等的部分在南和北使用GridLayout. 如果你想要中间的东西,你可以使用BorderLayout.

如果您想让您的用户能够更改子面板大小,请使用JSplitPane.

于 2012-10-29T17:57:18.563 回答
0

我在尝试将几行按钮放入从 ListDemo 示例借来的面板中时遇到了类似的问题。嗯,首先要做的是阅读BorderLayout如何使用 BorderLayout,或者至少看看那里显示的图像:
在此处输入图像描述

您不能在BorderLayout. 但是您可以使用嵌套布局。我们需要的是一个,BoxLayout请参阅如何使用 BoxLayout:。
在此处输入图像描述

我们只需要用按钮行替换上图中显示的按钮。

public class MyStuff extends JPanel {
  ...
  public MyStuff() {
    super(new BorderLayout());
    ...
    JPanel buttonArea = new JPanel();
    buttonArea.setLayout(new BoxLayout(buttonArea, BoxLayout.PAGE_AXIS));
    add(buttonArea, BorderLayout.PAGE_END);
    ...
    //if you dislike the default center alignment:
    //panelWithButtons1.setAlignmentX(Component.LEFT_ALIGNMENT);
    buttonArea.add(...);// add the 1st panel with buttons
    buttonArea.add(...);// add the 2nd panel with buttons
    buttonArea.add(...);// add the 3rd panel with buttons
于 2015-04-15T08:46:40.490 回答