在图形用户界面编程中,如果只是普通的组件布局,我们用流式布局管理器(FlowLayout)、边界布局管理器(BorderLayout)、网格布局管理器(GridLayout)就可以解决,但是在比较复杂的布局要求时,就需要使用布局管理器的组合使用,比如下图:
JPanel:面板组件,非顶层容器。
一个界面只可以有一个JFrame窗体组件,但可以有多个Jpanel面板组件,而JPanel上可使用FlowLayout、BorderLayout、GirdLayout等各种布局管理器,这样组合使用可以达到较为复杂的布局效果。
JPanel是JComponent的子类,属于容器类组件,可以加入别的组件。JPanel默认布局是流式布局。
package Test31;
import java.awt.*;
import javax.swing.*;
public class Test31 extends JFrame{
//定义组件
JPanel jp1, jp2;
JButton jb1, jb2, jb3, jb4, jb5, jb6;
public static void main(String[] args) {
Test31 test31 = new Test31();
}
//构造函数
public Test31()
{
// 创建组件
jp1 = new JPanel();
jp2 = new JPanel();
jb1 = new JButton("金字塔");
jb2 = new JButton("木乃伊");
jb3 = new JButton("长城");
jb4 = new JButton("兵马俑");
jb5 = new JButton("圆明园");
jb6 = new JButton("凡尔赛");
//设置布局管理器
this.setLayout(new BorderLayout());
//把组件添加到Jpanel
jp1.add(jb1);
jp1.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
jp2.add(jb5);
// 把JPanel添加到JFrame
this.add(jp1, BorderLayout.NORTH);
this.add(jb6, BorderLayout.CENTER);
this.add(jp2, BorderLayout.SOUTH);
this.setTitle("JPanel组件");
this.setSize(300,200);
this.setLocation(200,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
运行结果: