韩顺平 java 第31讲 常用组件

面板组件 JPanel

为什么有JPanel?

在图形用户界面编程中,如果只是普通的组件布局,可以用前面的三种布局管理器就可以解决,但是在比较复杂的布局要求时,就需要使用布局管理器的组合使用。

怎么用JPanel?

JPanel是面板组件,非顶层容器。
一个界面只能有一个JFrame窗体组件,但是可以有多个JPanel面板组件,而JPanel上也可以使用FlowLayout、BorderLayout、GridLayout等各种布局效果,这样可以组合使用达到较为复杂的布局效果。

package test;


import java.awt.*;
import javax.swing.*;
import javax.swing.*;

public class MyClass extends JFrame{
    //定义组件
    JButton jb1,jb2,jb3,jb4,jb5,jb6;
    JPanel jp1,jp2;

    public static void main(String[] args) {
        MyClass myclass = new MyClass();
    }

    public MyClass(){
        //创建组件
        jb1 = new JButton("1");
        jb2 = new JButton("2");
        jb3 = new JButton("3");
        jb4 = new JButton("4");
        jb5 = new JButton("5");
        jb6 = new JButton("6");

        jp1 = new JPanel();
        jp2 = new JPanel();

        //添加组件
        jp1.add(jb1);
        jp1.add(jb2);
        jp2.add(jb3);
        jp2.add(jb4);
        jp2.add(jb5);

        this.add(jp1,BorderLayout.NORTH);
        this.add(jp2,BorderLayout.SOUTH);
        this.add(jb6,BorderLayout.CENTER);



        this.setTitle("网格布局演示");
        this.setSize(300,200);
        this.setLocation(200, 100);
        this.setResizable(false);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

这里写图片描述

注意事项

  1. Jpanel是JComponent的子类
  2. 属于容器类组件,可以加入别的组件
  3. 默认布局管理器就是流式布局(FlowLayout)

用户登陆界面涉及到的几个常用组件

  • 文本框 JTextField
  • 密码框 JPasswordField
  • 标签 Jlabel
package test;


import java.awt.*;

import javax.swing.*;
import javax.swing.*;

public class MyClass extends JFrame{
    //定义组件
    JButton jb1,jb2;
    JPanel jp1,jp2,jp3;
    JTextField jt;
    JPasswordField jpwd;
    JLabel jl1,jl2;

    public static void main(String[] args) {
        MyClass myclass = new MyClass();
    }

    public MyClass(){
        //创建组件
        jb1 = new JButton("确认");
        jb2 = new JButton("取消");

        jp1 = new JPanel();
        jp2 = new JPanel();
        jp3 = new JPanel();

        jt = new JTextField(10);//这里设置宽度
        jpwd = new JPasswordField(10);

        jl1 = new JLabel("用户名");
        jl2 = new JLabel("密  码");


        this.setLayout(new GridLayout(3,1));

        //添加组件
        jp1.add(jl1);
        jp1.add(jt);

        jp2.add(jl2);
        jp2.add(jpwd);

        jp3.add(jb1);
        jp3.add(jb2);

        this.add(jp1);
        this.add(jp2);
        this.add(jp3);



        this.setTitle("用户登陆界面");
        this.setSize(300,160);
        this.setLocation(200, 100);
        this.setResizable(false);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

这里写图片描述


复选框、单选框、下拉框、列表框、滑动窗格

  • 复选框组件 JCheckBox
  • 单选框组件 JradioButton
  • 下拉框 JComboBox
  • 列表框 JList
  • 滑动窗格 JScrollPanel
    特别说明
    同一组单选按钮必须先创建ButtonGroup,然后把单选框组件放入到ButtonGroup中。
    一般来说,列表框组件+滑动窗格组件是结合使用的,目的是让列表框中的选项可以有滚动条支持。
package test;

import java.awt.*;
import javax.swing.*;
import javax.swing.*;

public class MyClass extends JFrame{
    //定义组件
    JButton jb1,jb2;
    JPanel jp1,jp2,jp3,jp4,jp5;
    JLabel jl1,jl2,jl3,jl4;
    JCheckBox jcb1,jcb2,jcb3;
    JRadioButton jrb1,jrb2;
    ButtonGroup bg;
    JComboBox jcb;
    JList jlist;
    JScrollPane jsp;

    public static void main(String[] args) {
        MyClass myclass = new MyClass();
    }

    public MyClass(){
        //创建组件
        jp1 = new JPanel();
        jp2 = new JPanel();
        jp3 = new JPanel();
        jp4 = new JPanel();
        jp5 = new JPanel();

        jl1 = new JLabel("你喜欢的运动");
        jl2 = new JLabel("性别");
        jl3 = new JLabel("籍贯");
        jl4 = new JLabel("喜欢的明星");

        jcb1 = new JCheckBox("足球");
        jcb2 = new JCheckBox("篮球");
        jcb3 = new JCheckBox("网球");

        jrb1 = new JRadioButton("男");
        jrb2 = new JRadioButton("女");

        bg = new ButtonGroup();
        bg.add(jrb1);
        bg.add(jrb2);

        String []jg = {"北京","上海","山东"};
        jcb = new JComboBox(jg);
        String []dd = {"Jay","JJ","蔡依林","陈","那英","周杰伦呢","赵四","赵本山"};
        jlist = new JList(dd);
        jlist.setVisibleRowCount(3);
        jsp = new JScrollPane(jlist);

        jb1 = new JButton("注册用户");
        jb2 = new JButton("取消注册");

        //设置布局
        this.setLayout(new GridLayout(5,1));

        //添加组件
        jp1.add(jl1);
        jp1.add(jcb1);
        jp1.add(jcb2);
        jp1.add(jcb3);

        jp2.add(jl2);
        jp2.add(jrb1);
        jp2.add(jrb2);

        jp3.add(jl3);
        jp3.add(jcb);

        jp4.add(jl4);
        jp4.add(jsp);

        jp5.add(jb1);
        jp5.add(jb2);

        this.add(jp1);
        this.add(jp2);
        this.add(jp3);
        this.add(jp4);
        this.add(jp5);

        this.setTitle("单选框和复选框");
        this.setSize(400,300);
        this.setLocation(200, 100);
        this.setResizable(false);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值