在图形用户界面编程中, 如果只是普通的组件布局, 我们用前面讲的三种布局管理器就可以解决,
但在比较复杂的布局要求时,就需要使用布局管理器的组合使用。
面板组件 (JPanel)
JPanel :面板组件,非顶层容器,一个界面只可以有一个 JFrame 窗体组件,但可以有多个JPanel 面板组件 ,
而 JPanel 上也可以使用 FlowLayout 、 BorderLayout 、 GirdLayout 等各
种布局管理器,这样可以组合使用达到较为复杂的布局效果。
下面我们举个例子:
/**
* JPanel 测试
* 多种布局管理器的使用
*/
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo8_5 extends JFrame{
//定义小控件
JButton jb1 = null;
JButton jb2 = null;
JButton jb3 = null;
JButton jb4 = null;
JButton jb5 = null;
JButton jb6 = null;
//定义面板
JPanel jp1 = null;
JPanel jp2 = null;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo8_5 demo8_5 = new Demo8_5(300, 200);
}
public Demo8_5(int x_dispSize, int y_dispSize)
{
//创建小控件
jb1 = new JButton("香蕉");
jb2 = new JButton("橘子");
jb3 = new JButton("橙子");
jb4 = new JButton("榴莲");
jb5 = new JButton("苹果");
jb6 = new JButton("葡萄");
//创建JPanel
jp1 = new JPanel();
jp2 = new JPanel();
//添加JButton到JPanel,JPanel默认是流式布局
jp1.add(jb1);
jp1.add(jb2);
jp1.add(jb3);
jp2.add(jb4);
jp2.add(jb5);
//把JPanel添加到主窗体
this.add(jp1, BorderLayout.NORTH);
this.add(jb6, BorderLayout.CENTER);
this.add(jp2, BorderLayout.SOUTH);
//设置窗体标题
this.setTitle("JPanel测试");
//设置窗体大小
this.setSize(x_dispSize, y_dispSize);
//设置窗体显示位置
this.setLocation(500, 500);
//设置关闭窗体时,关闭JVM
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体不可更改大小
this.setResizable(false);
//设置窗体可见
this.setVisible(true);
}
}
显示出来的效果如下:
注意事项
1、 JPanel 是 JComponent 的子类;
2、属于容器类组件,可以加入别的组件;
3、默认布局管理器是流式布局 (FlowLayout)