Java 带有FlowLayout的Swing GUI,赢得';在JFrame上显示的组件数超过上次添加的组件数

Java 带有FlowLayout的Swing GUI,赢得';在JFrame上显示的组件数超过上次添加的组件数,java,swing,layout-manager,flowlayout,Java,Swing,Layout Manager,Flowlayout,我试图显示我在单独文件中创建的两个面板,一个在GUI的顶部,一个在GUI的底部,它们之间有一个按钮组。但是,该窗口一次仅显示一个面板或按钮组。面板和按钮组正确显示,但在任何给定执行时,仅显示添加到帧中的最后一个面板和按钮组 这是没有任何布局的当前代码 package UserGUI; import javax.swing.*; import java.awt.*; public class RealFrame extends JFrame { JButton Close = new JBut

我试图显示我在单独文件中创建的两个面板,一个在GUI的顶部,一个在GUI的底部,它们之间有一个按钮组。但是,该窗口一次仅显示一个面板或按钮组。面板和按钮组正确显示,但在任何给定执行时,仅显示添加到帧中的最后一个面板和按钮组

这是没有任何布局的当前代码

package UserGUI;

import javax.swing.*;
import java.awt.*;

public class RealFrame extends JFrame {
JButton Close = new JButton("Close");
JButton Proceed = new JButton("Proceed");
AuthorPanel header = new AuthorPanel();
FreeSpacePanel disk = new FreeSpacePanel();

public RealFrame() {
    super();       
    ButtonGroup Ops = new ButtonGroup();
    Ops.add(Close);
    Ops.add(Proceed);
    JPanel OPS = new JPanel();
    OPS.add(Close);
    OPS.add(Proceed);
    add(disk);
    add(OPS);
    add(header);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(500,500);
    setVisible(true);
   }
}
JFrame
内容窗格的默认布局管理器是
BorderLayout
。如果未指定约束,则组件将添加到
BorderLayout.CENTER
。只有一个零部件可以添加到中心,因此仅显示最后一个零部件

尝试:

看看有什么不同

或者在框架上尝试其他布局管理器。有关更多信息,请参阅

JFrame
内容窗格的默认布局管理器是
BorderLayout
。如果未指定约束,则组件将添加到
BorderLayout.CENTER
。只有一个零部件可以添加到中心,因此仅显示最后一个零部件

尝试:

看看有什么不同


或者在框架上尝试其他布局管理器。有关详细信息,请参阅。

JFrame
默认情况下使用
边框布局
,因此在执行此操作时

add(disk);
add(OPS);
add(header);
您正在将每个组件添加到同一位置(中心位置),但边界布局只会布局最后添加的组件

相反,你应该使用更像

add(disk, BorderLayout.NORTH);
add(OPS);
add(header, BorderLayout.SOUTH);

有关更多详细信息,请参见,默认情况下,JFrame使用
边框布局,因此当您这样做时

add(disk);
add(OPS);
add(header);
您正在将每个组件添加到同一位置(中心位置),但边界布局只会布局最后添加的组件

相反,你应该使用更像

add(disk, BorderLayout.NORTH);
add(OPS);
add(header, BorderLayout.SOUTH);

有关更多详细信息,请参见“带FlowLayout的Swing GUI”

——您在哪里将任何容器的布局管理器设置为FlowLayout?您可能在这里假设得太多了。1)请学习常见的Java命名法(命名约定-例如,
EachWordUpperCaseClass
firstWordLowerCaseMethod()
firstWordLowerCaseAttribute
,除非它是一个
常量。2) 为了更快地获得更好的帮助,请发布一个(最简单、完整、可验证的示例)或(简短、独立、正确的示例)。非常感谢大家!这确实是我的问题,我已经更改了布局设置,现在它可以工作了。谢谢@AndrewThompson,我一直在从样本和大量的尝试和错误中自学,所以我将重新阅读并纠正我糟糕的命名法。HovercraftFullOfEels,我将其作为标题发布,因为在发布代码之前,我在所有组件上都使用了FlowLayout,但我删除了它以提供空白代码。我在守则前面的评论中注意到了这一点;抱歉造成混淆。正如您所注意到的,任何评论都只能通知一个人,因此@HovercraftFullOfEels需要单独通知。;)你的问题是关于布局的,但是你发布了代码“没有布局”,是吗?
“Swing GUI with FlowLayout”
——你到底在哪里将任何容器的布局管理器设置为FlowLayout?您可能在这里假设得太多了。1)请学习常见的Java命名法(命名约定-例如,
EachWordUpperCaseClass
firstWordLowerCaseMethod()
firstWordLowerCaseAttribute
,除非它是一个
常量。2) 为了更快地获得更好的帮助,请发布一个(最简单、完整、可验证的示例)或(简短、独立、正确的示例)。非常感谢大家!这确实是我的问题,我已经更改了布局设置,现在它可以工作了。谢谢@AndrewThompson,我一直在从样本和大量的尝试和错误中自学,所以我将重新阅读并纠正我糟糕的命名法。HovercraftFullOfEels,我将其作为标题发布,因为在发布代码之前,我在所有组件上都使用了FlowLayout,但我删除了它以提供空白代码。我在守则前面的评论中注意到了这一点;抱歉造成混淆。正如您所注意到的,任何评论都只能通知一个人,因此@HovercraftFullOfEels需要单独通知。;)你的问题是关于布局的,但是你发布代码“没有布局”,是吗?