在前一节课中学习了组件,但是仅仅依靠组件是无法实现一些较为复杂的布局的。因此面板(JPanel)组件就应运而生,来解决这个问题。
一、面板组件使用实例
**
* 面板组件的使用
*/
public class Test2 extends JFrame{
//定义组件
JPanel jp1,jp2;
JButton jb1,jb2,jb3,jb4,jb5;
public static void main(String[] args) {
// TODO Auto-generated method stub
Test2 t = new Test2();
}
//构造
public Test2(){
//创建组件
jp1 = new JPanel();
jp2 = new JPanel();
jb1 = new JButton("苹果");
jb2 = new JButton("香蕉");
jb3 = new JButton("荔枝");
jb4 = new JButton("橘子");
jb5 = new JButton("西瓜");
//设置Layout
//将组件添加到JPanel
jp1.add(jb1);
jp1.add(jb2);
jp2.add(jb4);
jp2.add(jb5);
//将JPanel添加到JFrame里去
this.add(jp1,BorderLayout.NORTH);
this.add(jb3);
this.add(jp2, BorderLayout.SOUTH);
//设置窗口属性
this.setTitle("复杂面板演示");
this.setSize(300, 150);
this.setLocation(500, 120);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
输出效果:
二、文本框、密码框
public class TextTest extends JFrame {
//定义组件
JPanel jp1,jp2,jp3;
JLabel jlb1,jlb2;
JTextField jtf;
JPasswordField jpf ;
JButton jb1,jb2;
public static void main(String[] args) {
// TODO Auto-generated method stub
TextTest tt =new TextTest();
}
//构造
public TextTest(){
//创建组件
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jlb1 = new JLabel("管理员");
jlb2 = new JLabel("密 码");
jtf = new JTextField(10);
jpf = new JPasswordField(10);
jb1 = new JButton("登录");
jb2 = new JButton("取消");
//设置Layout
this.setLayout(new GridLayout(3,1));
//将组件添加到JPanel
jp1.add(jlb1);
jp1.add(jtf);
jp2.add(jlb2);
jp2.add(jpf);
jp3.add(jb1);
jp3.add(jb2);
//将JPanel添加到JFrame
this.add(jp1);
this.add(jp2);
this.add(jp3);
//设置窗体属性
this.setTitle("复杂面板演示");
this.setSize(300, 150);
this.setLocation(500, 120);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
输出效果
三、复选框、单选框的使用
public class CheckBoxTest extends JFrame {
//定义组件
JPanel jp1,jp2,jp3;
JLabel jlb1,jlb2;
JCheckBox jcb1,jcb2,jcb3 ;
JRadioButton jrb1,jrb2;
ButtonGroup bg;
JButton jb1,jb2;
public static void main(String[] args) {
// TODO Auto-generated method stub
CheckBoxTest cbt = new CheckBoxTest();
}
public CheckBoxTest(){
//创建组件
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jlb1 = new JLabel("你喜欢的运动是");
jlb2 = new JLabel("你的性别");
jcb1 = new JCheckBox("篮球");
jcb2 = new JCheckBox("足球");
jcb3 = new JCheckBox("网球");
jrb1 = new JRadioButton("男");
jrb2 = new JRadioButton("女");
jb1 = new JButton("注册用户");
jb2 = new JButton("取消注册");
//一定要把jrb1,jrb2放到一个BG
bg = new ButtonGroup();
bg.add(jrb1);
bg.add(jrb2);
//设置布局管理器
this.setLayout(new GridLayout(3,1));
//添加组件到JP
jp1.add(jlb1);
jp1.add(jcb1);
jp1.add(jcb2);
jp1.add(jcb3);
jp2.add(jrb1);
jp2.add(jrb2);
jp3.add(jb1);
jp3.add(jb2);
//将JP添加到JFrame
this.add(jp1);
this.add(jp2);
this.add(jp3);
//设置窗体属性
this.setTitle("复杂面板演示");
this.setSize(300, 150);
this.setLocation(500, 120);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
输出结果: