8.4 选择组件
经过上节的学习,我们知道了如何利用文本输入组件获取用户输入的文本,但是,在很多情况下,用户可能更倾向于你给他一些选择,而不是让他自己输入这些信息。Java中提供了这样的组件,可以使用户不需输入文字而与GUI界面进行交互。
8.4.1 JCheckBox 复选框
JCheckBox是从JToggleButton类中派生出来的,具有两种状态,通常用于显示文本,并有一个指示是否被选中的方形按钮。
JCheckBox的构造方法较多,详见下表8-7。
表8-7 JCheckBox构造方法
构造方法 | 说明 |
JCheckBox() | 创建一个没有文本、没有图标并且最初未被选定的复选框 |
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) | 创建一个带文本和图标的复选框,并指定其最初是否处于选定状态 |
构造方法中各参数意义
text - 复选框的文本
icon - 要显示的 Icon 图像
selected - 指示最初选择状态的 boolean 值。如果该参数为 true,则复选框被选定
当JCheckBox被选中或取消选中时,会触发一个事件,该事件就是ActionEvent,如果想根据JCheckBox的选中情况进行不同处理,可以编写实现ActionListener接口的类进行处理。
8.4.2 JRadioButton单选按钮
单选按钮JRadioButton与复选按钮JCheckBox几乎是相同的,都是从JToggleButton类中派生出来的,都具有两种状态,主要用于显示文本。JRadioButton有一个指示是否被选中的圆形按钮。不同之处在于单选按钮机会总是用于显示一组互相排斥的选项(如某人的性别,男、女只能选择一项),所以,JRadioButton通常位于一个ButtonGroup按钮组中,不在按钮组中的JRadioButton也就失去了JRadioButton的意义。
在同一个ButtonGroup按钮组种的单选按钮,任何时刻最多有一个单选按钮被选中,因此,如果我们创建的多个单选按钮其初始状态都是选中状态,则最先加入ButtonGroup按钮组的单选按钮的选中状态被保留,其后加入到ButtonGroup按钮组中的其他单选按钮的选中状态被取消。选中状态的保留与加入到ButtonGroup中的次序有关,与加入到其要显示的父容器顺序无关。
如下代码中
Container contentPane = this.getContentPane();
JRadioButton r1 = new JRadioButton("a",true);
JRadioButton r2 = new JRadioButton("b",true);
JRadioButton r3 = new JRadioButton("c",true);
ButtonGroup button = new ButtonGroup();
button.add(r3);
button.add(r2);
button.add(r1);
contentPane.setLayout(new FlowLayout());
contentPane.add(r2);
contentPane.add(r1);
contentPane.add(r3);
加入ButtonGroup中的JRadioButton的顺序为r3,r2,r1,而加入contentPane中的书序则为r2,r1,r2,这时候其运行效果如下:
可见其状态选中是根据加入ButtonGroup中的顺序决定的
JRadioButton提供了与JCheckBox完全相似的构造方法。见下表8-8
表8-8 JRadioButton构造方法
构造方法 | 说明 |
JRadioButton() | 创建一个初始化为未选择的单选按钮,其文本未设定 |
JRadioButton(Icon icon) | 创建一个初始化为未选择的单选按钮,其具有指定的图像但无文本 |
JRadioButton(Icon icon, boolean selected) | 创建一个具有指定图像和选择状态的单选按钮,但无文本 |
JRadioButton(String text) | 创建一个具有指定文本的状态为未选择的单选按钮 |
JRadioButton(String text, boolean selected) | 创建一个具有指定的文本和图像并初始化为未选择的单选按钮 |
JRadioButton(String text, Icon icon) | 创建一个具有指定的文本和图像并初始化为未选择的单选按钮 |
JRadioButton(String text, Icon icon,boolean selected) | 创建一个具有指定的文本、图像和选择状态的单选按钮 |
text -此单选按钮上显示的字符串
icon -此按钮应显示的图像
selected - 指示最初选择状态的 boolean 值。如果该参数为 true,则单选框被选定
当JRadioButton被选中或取消选中时,会触发一个事件,该事件就是ActionEvent,如果想根据JRadioButton的选中情况进行不同处理,可以编写实现ActionListener接口的类进行处理。
例8-5 中在JFrame添加了两个JRadioButton及三个JCheckBox,验证我们所学的部分知识。
[例 8-5]
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class JCheckBoxAndJRadioButtonTest extends JFrame{
private JPanel panelNorth = new JPanel();
private JLabel label1 = new JLabel("性别");
private JRadioButton rb1 = new JRadioButton("男",true);
private JRadioButton rb2 = new JRadioButton("女");
private ButtonGroup group = new ButtonGroup();
private JLabel label2 = new JLabel("擅长");
private JCheckBox cb1= new JCheckBox("书法");
private JCheckBox cb2= new JCheckBox("唱歌");
private JCheckBox cb3= new JCheckBox("跳舞");
private JButton button = new JButton("确定");
private JTextArea ta = new JTextArea(6,10);
public JCheckBoxAndJRadioButtonTest(String title){
super(title);
Container contentPane = this.getContentPane();
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。