Java 带有FlowLayout的Swing GUI,赢得';在JFrame上显示的组件数超过上次添加的组件数
我试图显示我在单独文件中创建的两个面板,一个在GUI的顶部,一个在GUI的底部,它们之间有一个按钮组。但是,该窗口一次仅显示一个面板或按钮组。面板和按钮组正确显示,但在任何给定执行时,仅显示添加到帧中的最后一个面板和按钮组 这是没有任何布局的当前代码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
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需要单独通知。;)你的问题是关于布局的,但是你发布代码“没有布局”,是吗?