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

时间:2014-09-09 07:15:41

标签: java swing jframe awt

我正在使用JFrame开发一个小型Java Swing应用程序。根据要求,我必须将JFrame区域分成许多子区域。

我在Using two JPanels in one JFrame中发现我可以在JPanel内使用JFrame来执行此操作,但我不必使用JPanel

您是否知道如何在不使用JFrame的情况下将JPanel区域划分为多个子区域?

1 个答案:

答案 0 :(得分:4)

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

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

JPanel panel = new JPanel();

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

frame.setContentPane(panel);

但是如果你真的想在不创建新容器(例如JFrame)的情况下划分/拆分/布局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);
    }
}