Java按钮控件详解(JButton、JCheckButton和JRadioButton)
按钮是图形用户界面最常用、最基本组件,经常用到的按钮有 JButton、JCheckBox、JRadioButton 等,这些按钮类均是 AbstractButton 类的子类或者间接子类。
AbstractButton 中定义了各种按钮所共有的一些方法,AbstractButton 类常用的成员方法有以下几个:
按钮类之间的继承关系如下图所示:

图 1 按钮组件类之间的继承关系图
下面分别对几个常用的按钮类进行简单介绍。
JButton 类常用的构造方法如下:
创建按钮对象的示例代码如下:
JCheckBox 组件类的常用构造方法如下:
创建复选框组件对象,可以通过 JCheckBox 类提供的成员方法设定复选框的属性。如通过 setText(String text) 方法设定文本提示信息,通过 setSelected(boolean b) 方法设定复选框的状态,通过 isSelected() 方法获取按钮当前的状态。
如果要实现多选一的功能,需要利用 javax.swing.ButtonGroup 类实现。这个类是一个不可见的组件,表示一组单选按钮之间互斥的逻辑关系,实现诸如 JRadioButton 等组件的多选一功能。
下面通过一个案例演示这几种按钮类的使用方法。
【实例】按钮类的使用。创建窗口并在窗口分别添加 JButton、JCheckButton 和 JRadioButton 三种不同的按钮。
AbstractButton 中定义了各种按钮所共有的一些方法,AbstractButton 类常用的成员方法有以下几个:
- Icon getIcon() 和 setIcon(Icon icon):获得和修改按钮图标;
- String getText() 和 setText(String text):获取和修改按钮文本信息;
- setEnabled(boolean b):启用或禁用按钮;
- setHorizontalAlignment(int alignment):设置图标和文本的水平对齐方式。
按钮类之间的继承关系如下图所示:

图 1 按钮组件类之间的继承关系图
下面分别对几个常用的按钮类进行简单介绍。
Java JButton
JButton 是最常用、最简单的按钮,可分为有无标签和图标几种情况。JButton 类常用的构造方法如下:
- JButton():创建一个无文本也无图标的按钮;
- JButton(String text):创建一个具有文本提示信息但没有图标的按钮;
- JButton(Icon icon):创建一个具有图标、但没有文本提示信息的按钮;
- JButton(String text, Icon icon):创建一个既有文本提示信息又有图标的按钮。
创建按钮对象的示例代码如下:
JButton bt=new JButton("保存",new ImageIcon("save.png"));
Java JCheckBox
JCheckBox 组件被称为复选框。它提供选中/未选中两种状态,并且可以同时选定多个。用户单击复选框就会改变该复选框原来的状态。JCheckBox 组件类的常用构造方法如下:
- JCheckBox():构造一个无标签的复选框;
- JCheckBox(String text):构造一个具有提示信息的复选框;
- JCheckBox(String text,boolean selected):创建具有文本的复选框,并指定其最初是否处于选定状态。
创建复选框组件对象,可以通过 JCheckBox 类提供的成员方法设定复选框的属性。如通过 setText(String text) 方法设定文本提示信息,通过 setSelected(boolean b) 方法设定复选框的状态,通过 isSelected() 方法获取按钮当前的状态。
Java JRadioButton
JRadioButton 组件被称为选项按钮。在 Java 中,JRadioButton 组件与 JCheckBox 组件功能完全一样,只是图形不同,复选框为方形图标,选项按钮为圆形图标。如果要实现多选一的功能,需要利用 javax.swing.ButtonGroup 类实现。这个类是一个不可见的组件,表示一组单选按钮之间互斥的逻辑关系,实现诸如 JRadioButton 等组件的多选一功能。
下面通过一个案例演示这几种按钮类的使用方法。
【实例】按钮类的使用。创建窗口并在窗口分别添加 JButton、JCheckButton 和 JRadioButton 三种不同的按钮。
import java.awt.*; import javax.swing.*; public class ButtonDemo extends JFrame { public ButtonDemo() { this.setTitle("三种按钮使用示例"); // 设置布局管理器 this.setLayout(new FlowLayout()); // 创建 3 个面板对象 JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); JPanel p3 = new JPanel(); // 创建 3 个复选框对象 JCheckBox cb1 = new JCheckBox("复选框 1"); JCheckBox cb2 = new JCheckBox("复选框 2"); JCheckBox cb3 = new JCheckBox("复选框 3"); // 添加组件到面板 p1 p1.add(cb1); p1.add(cb2); p1.add(cb3); // 创建 3 个单选按钮对象 JRadioButton rb1 = new JRadioButton("单选钮 1"); JRadioButton rb2 = new JRadioButton("单选钮 2"); JRadioButton rb3 = new JRadioButton("单选钮 3"); // 创建按钮组对象 ButtonGroup gpl = new ButtonGroup(); // 把单选钮对象添加到按钮组中,实现单选钮的多选一功能 gpl.add(rb1); gpl.add(rb2); gpl.add(rb3); // 把单选钮添加到面板 p2 p2.add(rb1); p2.add(rb2); p2.add(rb3); // 创建两个普通按钮对象 JButton bt1 = new JButton("按钮 1"); JButton bt2 = new JButton("按钮 2"); // 添加组件到面板 p3 p3.add(bt1); p3.add(bt2); // 把面板添加到窗体 this.add(p1); this.add(p2); this.add(p3); this.setSize(300, 200); this.setVisible(true); } public static void main(String[] args) { ButtonDemo tsb = new ButtonDemo(); } }程序执行结果为:
