Java GUI编程12---复选框:JCheckBox

认识JCheckBox

程序可以通过JRadioButton实现单选按钮的功能,那么如果要实现复选框的功能,则可以使用JCheckBox完成。JCheckBox的常用方法下表所示。

序号 方法 描述
1 public JCheckBox(Icon icon) 创建有一个图标、最初未被选定的复选框。
2 public JCheckBox(Icon icon, boolean selected) 创建一个带图标的复选框,并指定其最初是否处于选定状态。
3 public JCheckBox(String text) 创建一个带文本的、最初未被选定的复选框。
4 public JCheckBox(String text, boolean selected) 创建一个带文本的复选框,并指定其最初是否处于选定状态。
5 JCheckBox(String text, Icon icon) 创建带有指定文本和图标的、最初未选定的复选框。
6 JCheckBox(String text, Icon icon, boolean selected) 创建一个带文本和图标的复选框,并指定其最初是否处于选定状态。

JCheckBox的其他使用方法和JRadioButton的操作类似。
实例:定义复选框

package java1.swing.buttons;

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JCheckBox;
import javax.swing.BorderFactory;
class MyCheckBox
{
    // 窗体
    private JFrame frame = new JFrame("使用复选框"); // 定义窗体
    private Container cont = frame.getContentPane(); // 得到窗体容器
    private JCheckBox jcb1 = new JCheckBox("复选框1"); // 定义一个复选框
    private JCheckBox jcb2 = new JCheckBox("复选框2"); // 定义一个复选框
    private JCheckBox jcb3 = new JCheckBox("复选框3"); // 定义一个复选框
    private JPanel pan = new JPanel();
    public MyCheckBox()
    {
        pan.setBorder(BorderFactory.createTitledBorder("多选:"));
        pan.setLayout(new GridLayout(1, 3)); // 设置组件的排版
        pan.add(this.jcb1); // 增加组件
        pan.add(this.jcb2); // 增加组件
        pan.add(this.jcb3); // 增加组件
        cont.add(pan); // 将面板加入到容器之中
        this.frame.setSize(330, 80);
        this.frame.setVisible(true); // 设置可显示
        // 监听窗体关闭事件
        this.frame.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent arg)
            {
                System.exit(1);
            }
        });
    }
}

public class JCheckBoxDemo01
{
    public static void main(String args[])
    {
        new MyCheckBox();
    }
}

运行结果:
多选框
对比之前的单选按钮样式:
Java GUI编程12---复选框:JCheckBox_第1张图片
我们可以发现与单选按钮样式不同的是多选框是正方形的,单选按钮时圆形的。这和其他系统中常见的单选按钮,复选框样式都是一样的。
选择的时候样式对比:

  • 选中单选按钮时:
    Java GUI编程12---复选框:JCheckBox_第2张图片

  • 选中复选框时:
    选中复选框时
    对比发现,选中单选按钮时,会在单选按钮中显示黑原点,而复选框中则会打钩。

    JCheckBox事件处理

    JCheckBox和JRadioButton的事件监听接口是一样的,都是使用ItemListener接口。

package java1.swing.buttons;

import java.io.File;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.JFrame;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JCheckBox;
import javax.swing.BorderFactory;
//实现ItemListener接口方式监听复选框事件
class MyItemListener implements ItemListener
{
    private String right ="D:\\dev\\java\\my\\icon\\my\\right.png";
    //实现ItemListener的方法,只有一个方法。
    public void itemStateChanged(ItemEvent e)
    {
        //得到产生的事件,这里只有复选框所以可以强制类型转换。
        JCheckBox jcb = (JCheckBox) e.getItem(); // 得到产生的事件
        // 如果被选中了,则显示正确的图片
        if (jcb.isSelected())
        {   //显示打钩
            jcb.setIcon(new ImageIcon(right));
        } else
        {
            //取消图片显示
            jcb.setIcon(null);
        }
    }
}
class MyCheckBox1
{
    private JFrame frame = new JFrame("多选框事件处理"); // 定义窗体
    private Container cont = frame.getContentPane(); // 得到窗体容器
    private JCheckBox jcb1 = new JCheckBox("CSDN"); // 定义一个复选框
    private JCheckBox jcb2 = new JCheckBox("Google"); // 定义一个复选框
    private JCheckBox jcb3 = new JCheckBox("GitHub"); // 定义一个复选框
    private JPanel pan = new JPanel();
    public MyCheckBox1()
    {
        pan.setBorder(BorderFactory.createTitledBorder("请选择你常用的网站"));
        pan.setLayout(new GridLayout(1, 3)); // 设置组件的排版
        pan.add(this.jcb1); // 增加组件
        pan.add(this.jcb2); // 增加组件
        pan.add(this.jcb3); // 增加组件

        jcb1.addItemListener(new MyItemListener());
        jcb2.addItemListener(new MyItemListener());
        jcb3.addItemListener(new MyItemListener());

        cont.add(pan); // 将面板加入到容器之中
        this.frame.setSize(400, 100);
        this.frame.setVisible(true);
        //监听窗体关闭事件
        this.frame.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent arg)
            {
                System.exit(1);
            }
        });
    }

}

public class JCheckBoxDemo02
{
    public static void main(String args[])
    {
        new MyCheckBox1();
    }
}

打钩图片:right.png
打钩图片
打叉图片: wrong.png
打叉图片
运行结果:
开始运行结果
点击复选框,则发生ItemListener事件,监听器监听到该事件,并得到发生该事件的复选按钮对象的引用jcb ,然后可以通过引用jcb来设置提示图片:

  • 如选中CSDN按钮,则会在按钮前面显示打钩的图片。
    选中CSDN按钮
  • 取消选中CSDN,则图片消失
    取消选中
  • 多选:
    多选效果
    上面的程序功能与JRadionButton的事件监听操作非常的类似,当选好选型后根据选定的状态为按钮设置显示的图片。

你可能感兴趣的:(java)