如何在没有JPanel的情况下将JFrame区域划分为多个区域?

Aje*_*rma 2 java swing awt jframe

我正在使用JFrame. 根据要求,我必须将JFrame区域划分为许多子区域。

我在在一个 JFrame使用两个 JPanel 中发现我可以通过JPanel在我的内部使用 a来实现JFrame,但我不必使用JPanel.

你知道如何在JFrame不使用的情况下将区域划分为许多子区域JPanel吗?

Cri*_*lea 5

当您向框架 ( JFrame) 添加内容时,您实际上是添加到他的内容窗格中,这实际上是一个容器(JPanel也是一个通用的轻量级容器)。

“划分一个JFrame”的首选方法是实际“划分”一个JPanel,然后将该面板设置为框架的内容窗格。像这样的东西:

JPanel panel = new JPanel();

// ...
// layout panel, add components, etc...
// ...

frame.setContentPane(panel);
Run Code Online (Sandbox Code Playgroud)

但是,如果您真的想在JFrame不创建新容器(JPanel例如a)的情况下对 a进行划分/拆分/布局,则可以这样做:

frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(new JLabel("Left"), BorderLayout.WEST);
frame.getContentPane().add(new JLabel("Center"), BorderLayout.CENTER);
Run Code Online (Sandbox Code Playgroud)

这是一个完全有效的测试类:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)