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
(例如,a
JPanel
),以下方法是:

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布局管理器不够,或者太难实现我们想要的东西。我们很幸运:)还有其他布局管理器,其中很多都是开源的。我推荐你。