位置:首页 > Java > 按钮组件设计规范与开发实现指南

按钮组件设计规范与开发实现指南

时间:2026-08-17  |  作者:火苗实验室  |  阅读:0

Swing中的按钮组件

在Swing中,常见的按钮组件有JButton、JCheckBox、JRadioButton等。它们都是抽象类AbstractButton类的直接或间接子类。

在AbstractButton类中,提供了按钮组件通用的一些方法,如表1所示。

表1 AbstractButton常用方法

方法声明 功能描述
Icon getIcon() 获取按钮的图标
void setIcon(Icon icon) 设置按钮的图标
String getText() 获取按钮的文本
void setText(String text) 设置按钮的文本
void setEnable(boolean b) 设置按钮是否可用
boolean setSelected(boolean b) 设置按钮是否为选中状态
boolean isSelected() 返回按钮的状态(true为选中,反之为未选中)

在前面的案例中,已经多次用到JButton按钮,而且它的使用非常简单,这里不再介绍。

接下来,主要围绕JCheckBoxJRadioButton这两个组件进行详细讲解。

1.JCheckBox

JCheckBox组件被称为复选框组件。它有选中和未选中两种状态。

通常,复选框会有多个,用户可以选中其中一个或者多个。表1列举了JCheckBox类的常用构造方法。

表2 JcheckBox常用构造方法

方法声明 功能描述
JCheckBox() 创建一个没有文本信息,初始状态未被选中的复选框
JCheckBox(String text) 创建一个带有文本信息,初始状态未被选定的复选框
JCheckBox(String text,boolean selected) 创建一个带有文本信息,并指定初始状态(选中/未选中)的复选框

表1中列出了用于创建JCheckBox对象的三个构造方法。

  • 第一个构造方法没有指定复选框的文本信息以及状态。

  • 如果想设置文本信息,可以调用JCheckBox从父类继承的方法,例如setText(String text)。

  • 调用setSelected(boolean b)方法,可以设置复选框状态是否被选中。

  • 调用isSelected()方法,可以判断复选框是否被选中。

  • 第二个和第三个构造方法都指定了复选框的文本信息。

  • 第三个构造方法还指定了复选框初始化状态是否被选中。

接下来通过一个案例,演示一下JCheckBox复选框组件的基本用法,如文件1所示。

文件1 Example13.ja va

 1    import ja va.awt.*;
 2    import ja va.awt.event.*;
 3    import ja vax.swing.*;
 4    public class Example13 {
 5        private static void createAndShowGUI() {
 6            // 1、创建一个JFrame容器窗口
 7            JFrame f = new JFrame("JFrame窗口");
 8            f.setLayout(new BorderLayout());
 9            f.setSize(300, 300);
 10            f.setLocation(300, 200);
 11            f.setVisible(true);
 12            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 13            // 2、创建一个JLabel标签组件,标签文本居中对齐
 14            JLabel label = new JLabel("Hello World!", JLabel.CENTER);
 15            label.setFont(new Font("宋体", Font.PLAIN, 20));
 16            // 3、创建一个JPanel面板组件
 17            JPanel panel = new JPanel();
 18            // 3.1、创建两个JCheckBox复选框,并添加到JPanel组件中
 19            JCheckBox italic = new JCheckBox("ITALIC");
 20            JCheckBox bold = new JCheckBox("BOLD");
 21            // 3.2、为复选框定义ActionListener监听器
 22            ActionListener listener = new ActionListener() {
 23                public void actionPerformed(ActionEvent e) {
 24                    int mode = 0;
 25                    if (bold.isSelected())
 26                        mode += Font.BOLD;
 27                    if (italic.isSelected())
 28                        mode += Font.ITALIC;
 29                    label.setFont(new Font("宋体", mode, 20));
 30                }
 31            };
 32            // 3.3、为两个复选框添加监听器
 33            italic.addActionListener(listener);
 34            bold.addActionListener(listener);
 35            // 3.4、在JPanel面板面板添加复选框
 36            panel.add(italic);
 37            panel.add(bold);
 38            // 4、向JFrame窗口容器中加入居中的JLabel标签组件和页尾的JPanel面板组件
 39            f.add(label);
 40            f.add(panel, BorderLayout.PAGE_END);
 41        }
 42        public static void main(String[] args) {
 43            // 使用SwingUtilities工具类调用createAndShowGUI()方法并显示GUI程序
 44            SwingUtilities.invokeLater(Example13::createAndShowGUI);
 45        }
 46    }

运行结果如图1所示。

按钮组件设计规范与开发实现指南_wishdown.com

图1 运行结果

文件1中,首先使用JFrame顶级容器创建并设置了一个容器窗口。

同时,通过BorderLayout布局管理器将窗口分为上下两个区域,并分别加入了居中的JLabel标签组件和页尾的JPanel面板组件。

其中,在页尾JPanel面板组件中又添加了两个JCheckBox复选框组件,同时针对两个不同的复选框组件还添加了动作监听器。

图1中,第1、第2和第3幅图分别表示未勾选、勾选一个和勾选两个复选框时,JLabel标签组件中的内容“Hello World!”所显示的字体样式。

2.JRadionButton

JRadioButton组件被称为单选按钮组件。

与JCheckBox复选框不同的是,单选按钮只能选中一个。就像收音机上的电台控制按钮,当按下一个,先前按下的按钮就会自动弹起。

说到JRadioButton,有一个很常见的需求:当前按钮一旦被选中,之前已经选中的那个就得自动取消。

不过,JRadioButton组件本身并没有自带这种互斥能力,所以要让多个JRadioButton之间实现“只能选一个”,就得借助ja vax.swing.ButtonGroup类。

ButtonGroup本身是一个不可见组件,不需要把它添加到容器里显示出来。它更像是逻辑层面上的一个单选按钮分组。

只要把多个JRadioButton按钮放进同一个单选按钮组里,就可以实现JRadioButton的单选效果。

接下来,来看一下JRadioButton常用的构造方法,如表3所示。

表3 JRadioButton常用构造方法

方法声明 功能描述
JRadioButton () 创建一个没有文本信息、初始状态未被选中的单选框
JRadioButton (String text) 创建一个带有文本信息、初始状态未被选定的单选框
JRadioButton (String text,boolean selected) 创建一个具有文本信息,并指定初始状态(选中/未选中)的单选框。

接下来通过一个案例来演示一下JRadioButton单选按钮组件的基本使用,如文本2所示。

文件2 Example14.ja va

 1    import ja va.awt.*;
 2    import ja va.awt.event.*;
 3    import ja vax.swing.*;
 4    public class Example14 {
 5        private static void createAndShowGUI() {
 6            // 1、创建一个JFrame容器窗口
 7            JFrame f = new JFrame("JFrame窗口");
 8            f.setLayout(new BorderLayout());
 9            f.setSize(300, 300);
 10            f.setLocation(300, 200);
 11            f.setVisible(true);
 12            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 13            // 2、创建一个JLabel标签组件,标签文本居中对齐
 14            JLabel label = new JLabel("Hello World!",JLabel.CENTER);
 15            label.setFont(new Font("宋体", Font.PLAIN, 20));
 16            // 3、创建一个页尾的JPanel面板组件,来封装ButtonGroup组件
 17            JPanel panel = new JPanel();
 18            // 3.1、创建一个ButtonGroup按钮组组件
 19            ButtonGroup group = new ButtonGroup();
 20            // 3.2、创建二个JRadioButton单选按钮组件
 21            JRadioButton italic = new JRadioButton("ITALIC");
 22            JRadioButton bold = new JRadioButton("BOLD");
 23            // 3.3、将二个JRadioButton单选按钮组件加入到同一个ButtonGroup组中
 24            group.add(italic);
 25            group.add(bold);
 26            // 3.4、为二个JRadioButton单选按钮组件注册动作监听器
 27            ActionListener listener = new ActionListener() {
 28                public void actionPerformed(ActionEvent e) {
 29                    int mode = 0;
 30                    if (bold.isSelected())
 31                        mode += Font.BOLD;
 32                    if (italic.isSelected())
 33                        mode += Font.ITALIC;
 34                    label.setFont(new Font("宋体", mode, 20));
 35                }
 36            };
 37            // 3.5、为二个复选框添加监听器
 38            italic.addActionListener(listener);
 39            bold.addActionListener(listener);
 40            // 3.6、将二个JRadioButton单选按钮组件加入到页尾的JPanel组件中
 41            panel.add(italic);
 42            panel.add(bold);
 43            // 4、向JFrame容器中分别加入居中的JLabel标签组件和页尾的JPanel面板组件
 44            f.add(label);
 45            f.add(panel, BorderLayout.PAGE_END);
 46        }
 47        public static void main(String[] args) {
 48            // 使用SwingUtilities工具类调用createAndShowGUI()方法显示GUI程序
 49            SwingUtilities.invokeLater(Example14::createAndShowGUI);
 50        }
 51    }

运行结果如图2所示。

按钮组件设计规范与开发实现指南_wishdown.com

图2 运行结果

在文件2里,先通过JFrame这个顶级容器创建并完成窗口设置。

再借助BorderLayout布局管理器,把整个窗口划分为上下两个区域。

  • 中间区域放入一个居中的JLabel标签组件,用来承载文本信息。

  • 底部区域放置一个页尾JPanel面板,并在这个面板里加入了两个单选框JradioButton按钮组件。

这样一来,当点击这两个不同按钮中的任意一个时,都会触发对应的监听器。

由于单选框的特性,同一时刻只能选中其中一个按钮组件。随后,就会在居中区域显示出不同的效果。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多