在前一节课中学习了组件,但是仅仅依靠组件是无法实现一些较为复杂的布局的。因此面板(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); } } 输出结果: