实例036 通过复选框控件数组实现添加多个复选框控件

实例036 通过复选框控件数组实现添加多个复选框控件

实例说明
复选框控件在GUI程序界面设计时经常使用,例如选择用户爱好的程序界面中要添加很多选项,这些选项如果通过GUI界面设计器来录入非常费时,而且生成的代码臃肿,不方便维护。不过可以通过复选框控件数组实现在窗体中添加多个复选框。本实例将通过复选框控件数组实现选择用户爱好信息的复选框,并且界面中的复选框数量可以根据指定复选框名称的字符串数组的长度来自动调节。实例的运行效果如图5.6所示。

实现过程

编写getPanel()方法创建面板并在面板中通过控件数组来创建爱好复选框。其中所有复选框的文本都是由字符串数组定义的,复选框的数量也是根据字符串数组长度确定的。关键代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.mingrisoft;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridLayout;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class CheckBoxArray extends JFrame {

private static final long serialVersionUID = -5338362310060106193L;
private JPanel contentPane;
private JPanel panel;

/**
* Launch the application.
*/
public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {
public void run() {
try {
CheckBoxArray frame = new CheckBoxArray();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public CheckBoxArray() {
setTitle("通过复选框控件数组实现添加多个复选框控件");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 409, 331);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);

JLabel label = new JLabel("你的爱好有哪些:");
contentPane.add(label, BorderLayout.NORTH);
contentPane.add(getPanel(), BorderLayout.CENTER);
}

private JPanel getPanel() {
if (panel == null) {
// 创建面板对象
panel = new JPanel();
// 设置网格布局管理器
panel.setLayout(new GridLayout(0, 4));
// 创建控件文本数组
String[] labels = { "足球", "篮球", "魔术", "乒乓球", "看电影", "魔兽世界", "CS战队", "羽毛球", "游泳", "旅游", "爬山", "唱歌", "写博客",
"动物世界", "拍照", "弹吉他", "读报纸", "飙车", "逛街", "逛商场", "麻将", "看书", "上网看资料", "新闻", "军事", "八卦", "养生", "饮茶" };
// 创建控件数组
JCheckBox[] boxs = new JCheckBox[labels.length];
// 遍历控件数组
for (int i = 0; i < boxs.length; i++) {
// 初始化数组中的复选框组件
boxs[i] = new JCheckBox(labels[i]);
// 把数组元素(即每个复选框)添加到面板中
panel.add(boxs[i]);
}
}
return panel;
}
}

多学两招

在编写一个方法时,要考虑到方法的通用性,尽量对方法进行抽象让方法适合更多的模块调用,例如本实例中的getPanel()方法完全可以把控件标签文本数组作为方法的参数,这样其他模块就可以为该方法传递参数创建爱好选择面板了

1
2
3
4
5
6
7
8
9
10
11
12
private JPanel getPanel(String[] labels) {
JPanel panel = new JPanel();
// 设置网格布局管理器
panel.setLayout(new GridLayout(0, 4));
JCheckBox[] checkBoxs = new JCheckBox[labels.length];
for (int i = 0; i < checkBoxs.length; i++) {
checkBoxs[i] = new JCheckBox(labels[i]);
panel.add(checkBoxs[i]);
}

return panel;
}

技术要点

本实例中应用的主要技术是在JPanel面板中应用复选框控件数组添加复选框控件。应用复选框控件数组添加复选框控件的具体实现步骤如下:
(1)定义一个字符串数组,内容为复选框的标题文本。
(2)创建JCheckBox类型的控件数组,即复选框控件数组,其长度与步骤(1)中创建的字符串数组的长度相同。
(3)通过for循环遍历刚刚创建的复选框控件数组,并将数组元素(即每个复选框)添加到面板中。