Java 如何在没有JPanel的情况下将JFrame区域划分为多个区域?
我正在使用Java 如何在没有JPanel的情况下将JFrame区域划分为多个区域?,java,swing,jframe,awt,Java,Swing,Jframe,Awt,我正在使用JFrame开发一个小型Java Swing应用程序。根据要求,我必须将JFrame区域划分为多个子区域 我发现我可以在JFrame中使用JPanel来实现这一点,但我不必使用JPanel 你知道我如何在不使用JPanel的情况下将JFrame区域划分为多个子区域吗?当你向一个框架(JFrame)中添加一些东西时,你实际上会添加到他的内容窗格中,这实际上是一个容器(JPanel也是一个通用的轻量级容器) “分割JFrame”的首选方法是实际“分割”一个JPanel,然后将该面板设置为框
JFrame
开发一个小型Java Swing应用程序。根据要求,我必须将JFrame
区域划分为多个子区域
我发现我可以在JFrame
中使用JPanel
来实现这一点,但我不必使用JPanel
你知道我如何在不使用
JPanel
的情况下将JFrame
区域划分为多个子区域吗?当你向一个框架(JFrame
)中添加一些东西时,你实际上会添加到他的内容窗格中,这实际上是一个容器(JPanel
也是一个通用的轻量级容器)
“分割JFrame
”的首选方法是实际“分割”一个JPanel
,然后将该面板设置为框架的内容窗格。大概是这样的:
JPanel panel = new JPanel();
// ...
// layout panel, add components, etc...
// ...
frame.setContentPane(panel);
但是,如果您确实想在不创建新容器的情况下分割/分割/布局
JFrame
(例如,aJPanel
),以下方法是:
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(new JLabel("Left"), BorderLayout.WEST);
frame.getContentPane().add(new JLabel("Center"), BorderLayout.CENTER);
这是一个完全工作的测试类:
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(new JButton("Left"), BorderLayout.WEST);
frame.getContentPane().add(new JButton("Center"), BorderLayout.CENTER);
frame.setSize(400, 300);
frame.setVisible(true);
}
}
最简单的方法是将UI划分为面板,这允许您为每个部分提供不同的布局管理器,这使得生成复杂的UI变得容易。否则,您需要使用复杂的布局管理器,如
GridBagLayout
,即使如此,您也不太可能实现您想要的结果使用JPanel
s有什么不好的地方?如果你告诉我们你的目标,我们可能会给出更好的答案。看看你是否想进一步了解JFrame check本教程:非常感谢,这似乎是可行的,但我有一个要求,我有许多复选框,我想设置他们在BorderLayout.WEST地区垂直。有可能吗?是的,有可能。您必须使用另一个布局,而不是BorderLayout,可能是GridBagLayout。检查此项以了解如何使用布局:是的,我已经使用过GridBagLayout,但我只是想知道是否有其他方法可用。。非常感谢。另一种“方式”(使用框架内容窗格的限制)意味着另一种“布局管理器”。有时候(我认为这是您的情况)默认的java布局管理器不够,或者太难实现我们想要的东西。我们很幸运:)还有其他布局管理器,其中很多都是开源的。我推荐你。