对用户界面进行设计时,很多情况下都需要给用户以选项做出选择。因此常常会用到选择组件,其中包括:复选框组件(JCheckBox)、单选框组件(JRadioButton)等。本篇文章主要介绍了Java Swing组件复选框JCheckBox用法,结合具体实例形式分析了JCheckBox和JRadioButton的简单用法与相关操作。
官方JavaDocsApi: javax.swing.JCheckBox
JCheckBox(复选框)组件为用户提供直接选择的按钮,其值为选中或未选中。如果复选框有多个,则用户可以选中一个或者多个。
JCheckBox();//创建一个没有文本、没有图标并且最初未被选定的复选框
JCheckBox(Action a);//创建一个复选框,其中从所提供的操作中获取属性
JCheckBox(Icon icon);//创建一个有图标,但未被选中的复选框
JCheckBox(Icon icon,boolean selected);//创建一个有图标复选框,并且制定是否被选中
JCheckBox(String text);//创建一个有文本,最初未被选中的复选框
JCheckBox(String text,boolean selected);//创建一个有文本的复选框,并且指定最初是否处于选定状态
JCheckBox(String text,Icon icon);//创建一个指定文本和图标、但未被选中的复选框
JCheckBox(String text,Icon icon,boolean selected);//创建一个指定文本和图标,并且制定是否被选中的复选框
void setText(String text);//设置复选框的文本
void setFont(Font font);//设置复选框的字体
void setForeground(Color fg);//设置复选框的字体颜色
void setSelected(boolean b);//设定复选框状态
boolean isSelected();//返回复选框状态,true时为选中
void setEnabled(boolean enable);//设置复选框是否可用
void setIconTextGap(int iconTextGap);//设置图片和文本的间距
void addChangeListener(ChangeListener l);// 添加状态改变监听器
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class example extends JFrame{
int DEFAULT_WIDTH = 600;
int DEFAULT_HEIGHT = 400;
private JLabel label;
private JCheckBox boldCheckbox;
private JCheckBox italicCheckbox;
private static final int FONTSIZE = 18;
public example(){
setTitle("CheckBoxTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
//添加label
label = new JLabel("生而自由,爱而无畏");
label.setFont(new Font("Serif",Font.PLAIN, FONTSIZE));
add(label, BorderLayout.CENTER);
//构造一个监听器,响应checkBox事件
ActionListener actionListener = new ActionListener(){
public void actionPerformed(ActionEvent e) {
int mode = 0;
if(boldCheckbox.isSelected()) mode += Font.BOLD;
if(italicCheckbox.isSelected()) mode += Font.ITALIC;
label.setFont(new Font("Serif", mode, FONTSIZE));
}
};
//添加buttonPanel,它包含2个checkBox
JPanel buttonPanel = new JPanel();
add(buttonPanel, BorderLayout.SOUTH);
//为buttonPanel添加2个checkBox
boldCheckbox = new JCheckBox("bold");
boldCheckbox.addActionListener(actionListener);
buttonPanel.add(boldCheckbox);
italicCheckbox = new JCheckBox("italic");
italicCheckbox.addActionListener(actionListener);
buttonPanel.add(italicCheckbox);
}
public static void main(String[] args) {
example frame = new example(); //创建窗体并指定标题
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗体后退出程序
frame.setLocationRelativeTo(null);//设置窗体位置在屏幕中央
frame.setVisible(true); //显示窗体
}
}
可单击鼠标对其进行选中操作,可同时选中多个复选框,再次点击可取消选中。运行截图如下:
官方JavaDocsApi: javax.swing.JRadioButton
JRadioButton(单选框)组件为用户提供直接选择的按钮,其值为选中或未选中。与复选框不同的是,如果在一组中有多个单选框,则用户只能同时选中一个。当一个单选按钮被选中时,先前被选中的单选按钮就会自动取消选中。要想实现多个JRadioButton具有互斥性,则需要使用ButtonGroup类,且将需要互斥的单选按钮通过add()方法加人到同一个ButtonrGroup按钮组。ButtonGroup 是个不可见的组件,不需要将其增加到容器中显示。
JRadioButton();//创建一个没有文本、没有图标并且最初未被选定的单选框
JRadioButton(String text);//创建一个带文本、最初未被选定的单选框
JRadioButton(String text, boolean selected);//创建一个带文本的单选框、并指定其最初是否处于选定状态
JRadioButton(String text, Icon icon);//创建带有指定文本和图标的、最初未被选定的单选框
JRadioButton(String text, Icon icon, boolean selected);//创建带有指定文本和图标的单选框,并指定其最初是否处于选定状态
void setText(String text);// 设置单选框的文本
void setFont(Font font);// 设置单选框的字体
void setForeground(Color fg);// 设置单选框的字体颜色
void setSelected(boolean b);// 设置单选按钮是否选中状态
boolean isSelected();//判断单选按钮是否选中
void setEnabled(boolean enable);//设置单选按钮是否可用
void setIcon(Icon defaultIcon);// 设置单选按钮在 默认时显示的图片
void setPressedIcon(Icon pressedIcon);// 设置单选按钮在被选中时显示的图片
void setDisabledIcon(Icon disabledIcon);// 设置单选按钮在不可用时显示的图片
void setIconTextGap(int iconTextGap);// 设置图片和文本的间距
void addChangeListener(ChangeListener l);//添加状态改变监听器
当有多个单选按钮时,一般只允许一个单选按钮选中,因此需要对同一类型的单选按钮进行分组。
ButtonGroup btnGroup = new ButtonGroup();// 创建一个按钮组
// 添加单选按钮到按钮组
btnGroup.add(radioBtn01);
btnGroup.add(radioBtn02);
import javax.swing.*;
import java.awt.*;
public class example {
public static void main(String[] args) throws AWTException {
JFrame jf = new JFrame("example");
jf.setSize(600, 400);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
// 创建两个单选按钮
JRadioButton radioBtn01 = new JRadioButton("生而自由");
JRadioButton radioBtn02 = new JRadioButton("爱而无畏");
// 创建按钮组,把两个单选按钮添加到该组
ButtonGroup btnGroup = new ButtonGroup();
btnGroup.add(radioBtn01);
btnGroup.add(radioBtn02);
// 设置第一个单选按钮选中
radioBtn01.setSelected(true);
panel.add(radioBtn01);
panel.add(radioBtn02);
jf.setContentPane(panel);
jf.setVisible(true);
}
}