Java2实用教程(第二版)程序代码——第十三章 选择型组件
1
//例子1
2
import java.applet.*;import java.awt.*;
3
class Mypanel1 extends Panel
4
{ Checkbox box1,box2,box3;CheckboxGroup sex;
5
Mypanel1()
6
{ sex=new CheckboxGroup();
7
box1=new Checkbox("男",true,sex);
8
box2=new Checkbox("女",false,sex);
9
add(box1);add(box2);
10
}
11
}
12
class Mypanel2 extends Panel
13
{ Checkbox box1,box2,box3;
14
Mypanel2()
15
{ box1=new Checkbox("读书");
16
box2=new Checkbox("电脑");
17
box3=new Checkbox("电影");
18
add(box1);add(box2);add(box3);
19
}
20
}
21
public class Example13_1 extends Applet
22
{ Mypanel1 panel1;Mypanel2 panel2;
23
public void init()
24
{ setLayout(new GridLayout(1,2));
25
panel1=new Mypanel1();panel2=new Mypanel2();
26
add(panel1);add(panel2);
27
}
28
}
29![]()
30
//例子2
31
import java.awt.*;import java.awt.event.*;import java.applet.*;
32
public class Example13_2 extends Applet implements ItemListener
33
{ Checkbox box1,box2,box3,box4;
34
TextArea text;
35
public void init()
36
{ box1=new Checkbox("→");box2=new Checkbox("↑");
37
box3=new Checkbox("←");box4=new Checkbox("↓");
38
box1.addItemListener(this);
39
box2.addItemListener(this);
40
box3.addItemListener(this);
41
box4.addItemListener(this);
42
text=new TextArea(16,18);
43
add(box1);add(box2);
44
add(box3);add(box4);
45
add(text);
46
}
47
public void itemStateChanged(ItemEvent e)
48
{ Checkbox box=(Checkbox)e.getItemSelectable(); //获取事件源。
49
if(box.getState())
50
{ int n=text.getCaretPosition(); //获取文本区活动光标位置。
51
text.insert(box.getLabel(),n); //插入字符。
52
box.setState(false);
53
}
54
}
55
}
56![]()
57
//例子3
58
import java.applet.*;import java.awt.*;import java.awt.event.*;
59
import java.util.StringTokenizer;
60
public class Example13_3 extends Applet implements ActionListener
61
{ Label 候名字=new Label("首先输入候选人的名字(人数不超过10,名字之间用逗号分隔):"),
62
统计选票=new Label("用下面的选择框统计选票:",Label.CENTER),
63
结果=new Label("选举结果:");
64
Button 确认=new Button("确认"),取消=new Button("取消"),
65
确定=new Button("确定"),刷新=new Button("刷新"),
66
排序=new Button("排序");
67
TextField name=new TextField(48); //输入候选人。
68
TextField voteMessage=new TextField(46); //显示选举信息。
69
Checkbox checkbox[]=new Checkbox[10]; //选择框数组,代表候选人。
70
TextField personVote[]=new TextField[10]; //文本条数组,显示每个人的得票情况。
71
int count[]=new int[10], //记录每个人的得票数。
72
totalVote=0, //总票数。
73
peopleNumber=0; //候选人个数。
74
Panel p2_1=new Panel(); //添加候选人的面板。
75
int 有效人数=3, //可选举的最多人数。
76
废票数=0,弃权票数=0;
77
public void init()
78
{ setLayout(new GridLayout(3,1));
79
Panel p1=new Panel(), //添加到小程序上部的面板和添加到该面板中的面板。
80
p1_1=new Panel(),p1_2=new Panel(),p1_3=new Panel();
81
p1.setLayout(new BorderLayout());
82
p1_1.add(候名字); p1_2.add(name);
83
p1_3.add(确认);p1_3.add(取消);p1_3.add(统计选票);
84
p1.add(p1_1,BorderLayout.NORTH);p1.add(p1_2,BorderLayout.CENTER);
85
p1.add(p1_3,BorderLayout.SOUTH);
86
Panel p2=new Panel(), //添加到小程序中间的面板p2,它里面的一个面板p2_1,
87
//将用来添加代表候选人的选择框。
88
p2_2=new Panel();
89
p2.setLayout(new BorderLayout());p2.setBackground(Color.cyan);
90
p2_1.setLayout(new GridLayout(2,5));
91
p2_2.add(确定); p2_2.add(刷新); p2_2.add(排序);
92
p2.add(p2_1,BorderLayout.CENTER);p2.add(p2_2,BorderLayout.SOUTH);
93
for(int i=0;i<=9;i++)
94
{ checkbox[i]=new Checkbox();
95
p2_1.add(checkbox[i]);
96
}
97
Panel p3=new Panel(), //添加到小程序底部的面板p3,及它里面的面板。
98
p3_1=new Panel(),p3_2=new Panel();
99
p3.setLayout(new BorderLayout());
100
p3_1.add(结果);p3_1.add(voteMessage);
101
p3_2.setLayout(new GridLayout(10,1));
102
for(int i=0;i<=9;i++)
103
{ personVote[i]=new TextField();
104
p3_2.add(personVote[i]);
105
}
106
ScrollPane scroll=new ScrollPane();
107
scroll.add(p3_2); //把p3_2添加到一个滚动窗体中。
108
p3.add(p3_1,BorderLayout.NORTH);
109
p3.add(scroll,BorderLayout.CENTER);
110
add(p1);add(p2); add(p3); //小程序添加这三个面板。
111
确认.addActionListener(this); 取消.addActionListener(this);
112
确定.addActionListener(this); 刷新.addActionListener(this);
113
排序.addActionListener(this);
114
}
115
public void actionPerformed(ActionEvent e)
116
{ String s[]=new String[10];
117
if(e.getSource()==确认)
118
{ p2_1.removeAll();
119
String s_name=name.getText();
120
//提取候选人的名字,名字用逗号(英文逗号或汉文逗号)分隔:
121
StringTokenizer fenxi=new StringTokenizer(s_name,",,");
122
peopleNumber=fenxi.countTokens(); //获取候选人的个数。
123
int i=0;
124
while(fenxi.hasMoreTokens()) //用单选框代表候选人,并添加到面板p2_1。
125
{
126
s[i]=fenxi.nextToken();
127
p2_1.add(checkbox[i]);
128
checkbox[i].setLabel(s[i]);
129
i++;
130
}
131
for(int k=0;k<peopleNumber;k++)
132
{ personVote[k].setText(null);
133
}
134
}
135
else if(e.getSource()==取消)
136
{ name.setText(null);
137
确认.setEnabled(true);
138
for(int k=0;k<peopleNumber;k++)
139
{ personVote[k].setText(null);
140
}
141
}
142
else if(e.getSource()==确定) //统计候选人的得票数目。
143
{ totalVote=totalVote+1; //记录下统计的票数。
144
确认.setEnabled(false);
145
//检查选票是否有效:
146
int number=0;
147
for(int k=0;k<peopleNumber;k++)
148
{ if(checkbox[k].getState())
149
{ number++;
150
}
151
}
152
if(number>有效人数)
153
{ 废票数++;
154
for(int k=0;k<peopleNumber;k++)
155
{ checkbox[k].setState(false);
156
}
157
}
158
else if(number==0)
159
{ 弃权票数++;
160
}
161
else if(number>0&&number<=有效人数)
162
{ for(int k=0;k<peopleNumber;k++)
163
{ if(checkbox[k].getState())
164
{ count[k]=count[k]+1;
165
checkbox[k].setState(false);
166
personVote[k].setText(checkbox[k].getLabel()+
167
" 的得票数:"+count[k]);
168
}
169
else
170
{ personVote[k].setText(checkbox[k].getLabel()+
171
" 的得票数:"+count[k]);
172
}
173
}
174
}
175
voteMessage.setText("已统计了:"+totalVote+"张选票,其中弃权票:"+
176
弃权票数+" 作废票:"+废票数);
177
}
178
else if(e.getSource()==排序) //对选举人按得票数,从大到小排序。
179
{ for(int i=0;i<peopleNumber;i++)
180
{ for(int j=i+1;j<peopleNumber;j++)
181
{ if(count[j]>count[i])
182
{ String str_temp=personVote[i].getText();
183
personVote[i].setText(personVote[j].getText());
184
personVote[j].setText(str_temp);
185
int nnn=count[i];count[i]=count[j];count[j]=nnn;
186
}
187
}
188
}
189
排序.setEnabled(false);确定.setEnabled(false);
190
}
191
else if(e.getSource()==刷新)
192
{ totalVote=0;
193
voteMessage.setText("已统计了:"+totalVote+"张选票");
194
name.setText(null);
195
确认.setEnabled(true); 确定.setEnabled(true); 排序.setEnabled(true);
196
for(int i=0;i<peopleNumber;i++)
197
{ count[i]=0;
198
personVote[i].setText(null);
199
p2_1.removeAll();
200
}
201
}
202
}
203
}
204![]()
205
//例子4
206
import java.awt.*;import java.awt.event.*;
207
public class Example13_4 extends java.applet.Applet implements
208
ItemListener,ActionListener
209
{ Choice choice;
210
TextField text;
211
TextArea area;
212
Button add,del;
213
public void init()
214
{ choice=new Choice();
215
text=new TextField(8);
216
area=new TextArea(6,15);
217
choice.add("音乐天地");
218
choice.add("武术天地");
219
choice.add("象棋乐园");
220
choice.add("交友聊天");
221
add=new Button("添加");
222
del=new Button("删除");
223
add.addActionListener(this);del.addActionListener(this);
224
choice.addItemListener(this);
225
add(choice);
226
add(del);add(text);add(add);add(area);
227
}
228
public void itemStateChanged(ItemEvent e)
229
{ String name=choice.getSelectedItem();
230
int index=choice.getSelectedIndex();
231
area.setText("\n"+index+":"+name);
232
}
233
public void actionPerformed(ActionEvent e)
234
{ if(e.getSource()==add||e.getSource()==text)
235
{ String name=text.getText();
236
if(name.length()>0)
237
{ choice.add(name);
238
choice.select(name);
239
area.append("\n添加"+name);
240
}
241
}
242
else if(e.getSource()==del)
243
{ choice.remove(choice.getSelectedIndex());
244
area.append("\n删除"+choice.getSelectedItem());
245
}
246
}
247
}
248![]()
249
//例子5
250
import java.applet.*;import java.awt.*;import java.awt.event.*;
251
public class Example13_5 extends Applet implements ItemListener,ActionListener
252
{ List list1,list2;
253
TextArea text1,text2; int index=0;
254
public void init()
255
{ list1=new List(3,false); list2=new List(3,false);
256
text1=new TextArea(6,15); text2=new TextArea(6,15);
257
list1.add("计算1+2+
"); list1.add("计算1*1+2*2+3*3
");
258
list1.add("计算1*1*1+2*2*2+3*3*3
");
259
for(int i=1;i<=100;i++)
260
{ list2.add("前"+i+"项和");
261
}
262
add(list1);add(list2);add(text1);add(text2);
263
list1.addItemListener(this); list2.addActionListener(this);
264
}
265
public void itemStateChanged(ItemEvent e)
266
{ if(e.getItemSelectable()==list1)
267
{ text1.setText(list1.getSelectedItem());
268
index=list1.getSelectedIndex();
269
}
270
}
271
public void actionPerformed(ActionEvent e)
272
{ int n=list2.getSelectedIndex(),sum=0;
273
String name=list2.getSelectedItem();
274
switch(index)
275
{ case 0:
276
for(int i=1;i<=n+1;i++)
277
{ sum=sum+i;
278
}
279
break;
280
case 1:
281
for(int i=1;i<=n+1;i++)
282
{ sum=sum+i*i;
283
}
284
break;
285
case 2:
286
for(int i=1;i<=n+1;i++)
287
{ sum=sum+i*i*i;
288
}
289
break;
290
default :
291
sum=-100;
292
}
293
text2.setText(name+"等于"+sum);
294
}
295
}
296![]()
//例子12
import java.applet.*;import java.awt.*; 3
class Mypanel1 extends Panel 4
{ Checkbox box1,box2,box3;CheckboxGroup sex;5
Mypanel1()6
{ sex=new CheckboxGroup();7
box1=new Checkbox("男",true,sex);8
box2=new Checkbox("女",false,sex); 9
add(box1);add(box2);10
}11
}12
class Mypanel2 extends Panel 13
{ Checkbox box1,box2,box3; 14
Mypanel2() 15
{ box1=new Checkbox("读书");16
box2=new Checkbox("电脑"); 17
box3=new Checkbox("电影");18
add(box1);add(box2);add(box3);19
}20
}21
public class Example13_1 extends Applet 22
{ Mypanel1 panel1;Mypanel2 panel2;23
public void init()24
{ setLayout(new GridLayout(1,2));25
panel1=new Mypanel1();panel2=new Mypanel2();26
add(panel1);add(panel2);27
}28
} 29

30
//例子231
import java.awt.*;import java.awt.event.*;import java.applet.*;32
public class Example13_2 extends Applet implements ItemListener33
{ Checkbox box1,box2,box3,box4;34
TextArea text; 35
public void init() 36
{ box1=new Checkbox("→");box2=new Checkbox("↑"); 37
box3=new Checkbox("←");box4=new Checkbox("↓");38
box1.addItemListener(this);39
box2.addItemListener(this);40
box3.addItemListener(this);41
box4.addItemListener(this);42
text=new TextArea(16,18);43
add(box1);add(box2);44
add(box3);add(box4);45
add(text); 46
} 47
public void itemStateChanged(ItemEvent e) 48
{ Checkbox box=(Checkbox)e.getItemSelectable(); //获取事件源。49
if(box.getState())50
{ int n=text.getCaretPosition(); //获取文本区活动光标位置。51
text.insert(box.getLabel(),n); //插入字符。52
box.setState(false);53
}54
}55
}56

57
//例子358
import java.applet.*;import java.awt.*;import java.awt.event.*;59
import java.util.StringTokenizer;60
public class Example13_3 extends Applet implements ActionListener61
{ Label 候名字=new Label("首先输入候选人的名字(人数不超过10,名字之间用逗号分隔):"),62
统计选票=new Label("用下面的选择框统计选票:",Label.CENTER),63
结果=new Label("选举结果:"); 64
Button 确认=new Button("确认"),取消=new Button("取消"), 65
确定=new Button("确定"),刷新=new Button("刷新"),66
排序=new Button("排序");67
TextField name=new TextField(48); //输入候选人。68
TextField voteMessage=new TextField(46); //显示选举信息。69
Checkbox checkbox[]=new Checkbox[10]; //选择框数组,代表候选人。70
TextField personVote[]=new TextField[10]; //文本条数组,显示每个人的得票情况。 71
int count[]=new int[10], //记录每个人的得票数。72
totalVote=0, //总票数。73
peopleNumber=0; //候选人个数。74
Panel p2_1=new Panel(); //添加候选人的面板。75
int 有效人数=3, //可选举的最多人数。76
废票数=0,弃权票数=0;77
public void init()78
{ setLayout(new GridLayout(3,1));79
Panel p1=new Panel(), //添加到小程序上部的面板和添加到该面板中的面板。80
p1_1=new Panel(),p1_2=new Panel(),p1_3=new Panel();81
p1.setLayout(new BorderLayout());82
p1_1.add(候名字); p1_2.add(name);83
p1_3.add(确认);p1_3.add(取消);p1_3.add(统计选票); 84
p1.add(p1_1,BorderLayout.NORTH);p1.add(p1_2,BorderLayout.CENTER);85
p1.add(p1_3,BorderLayout.SOUTH);86
Panel p2=new Panel(), //添加到小程序中间的面板p2,它里面的一个面板p2_1,87
//将用来添加代表候选人的选择框。88
p2_2=new Panel(); 89
p2.setLayout(new BorderLayout());p2.setBackground(Color.cyan);90
p2_1.setLayout(new GridLayout(2,5)); 91
p2_2.add(确定); p2_2.add(刷新); p2_2.add(排序);92
p2.add(p2_1,BorderLayout.CENTER);p2.add(p2_2,BorderLayout.SOUTH);93
for(int i=0;i<=9;i++)94
{ checkbox[i]=new Checkbox();95
p2_1.add(checkbox[i]);96
} 97
Panel p3=new Panel(), //添加到小程序底部的面板p3,及它里面的面板。98
p3_1=new Panel(),p3_2=new Panel();99
p3.setLayout(new BorderLayout());100
p3_1.add(结果);p3_1.add(voteMessage);101
p3_2.setLayout(new GridLayout(10,1));102
for(int i=0;i<=9;i++) 103
{ personVote[i]=new TextField();104
p3_2.add(personVote[i]);105
}106
ScrollPane scroll=new ScrollPane();107
scroll.add(p3_2); //把p3_2添加到一个滚动窗体中。108
p3.add(p3_1,BorderLayout.NORTH);109
p3.add(scroll,BorderLayout.CENTER);110
add(p1);add(p2); add(p3); //小程序添加这三个面板。111
确认.addActionListener(this); 取消.addActionListener(this); 112
确定.addActionListener(this); 刷新.addActionListener(this);113
排序.addActionListener(this);114
}115
public void actionPerformed(ActionEvent e)116
{ String s[]=new String[10]; 117
if(e.getSource()==确认)118
{ p2_1.removeAll();119
String s_name=name.getText();120
//提取候选人的名字,名字用逗号(英文逗号或汉文逗号)分隔:121
StringTokenizer fenxi=new StringTokenizer(s_name,",,");122
peopleNumber=fenxi.countTokens(); //获取候选人的个数。123
int i=0;124
while(fenxi.hasMoreTokens()) //用单选框代表候选人,并添加到面板p2_1。125
{126
s[i]=fenxi.nextToken();127
p2_1.add(checkbox[i]); 128
checkbox[i].setLabel(s[i]); 129
i++;130
}131
for(int k=0;k<peopleNumber;k++)132
{ personVote[k].setText(null);133
}134
}135
else if(e.getSource()==取消) 136
{ name.setText(null);137
确认.setEnabled(true);138
for(int k=0;k<peopleNumber;k++)139
{ personVote[k].setText(null);140
} 141
}142
else if(e.getSource()==确定) //统计候选人的得票数目。143
{ totalVote=totalVote+1; //记录下统计的票数。144
确认.setEnabled(false);145
//检查选票是否有效:146
int number=0;147
for(int k=0;k<peopleNumber;k++)148
{ if(checkbox[k].getState())149
{ number++; 150
}151
}152
if(number>有效人数)153
{ 废票数++;154
for(int k=0;k<peopleNumber;k++)155
{ checkbox[k].setState(false);156
}157
}158
else if(number==0)159
{ 弃权票数++;160
}161
else if(number>0&&number<=有效人数)162
{ for(int k=0;k<peopleNumber;k++)163
{ if(checkbox[k].getState())164
{ count[k]=count[k]+1; 165
checkbox[k].setState(false);166
personVote[k].setText(checkbox[k].getLabel()+167
" 的得票数:"+count[k]);168
}169
else170
{ personVote[k].setText(checkbox[k].getLabel()+171
" 的得票数:"+count[k]);172
}173
}174
}175
voteMessage.setText("已统计了:"+totalVote+"张选票,其中弃权票:"+176
弃权票数+" 作废票:"+废票数);177
}178
else if(e.getSource()==排序) //对选举人按得票数,从大到小排序。179
{ for(int i=0;i<peopleNumber;i++)180
{ for(int j=i+1;j<peopleNumber;j++)181
{ if(count[j]>count[i])182
{ String str_temp=personVote[i].getText(); 183
personVote[i].setText(personVote[j].getText());184
personVote[j].setText(str_temp); 185
int nnn=count[i];count[i]=count[j];count[j]=nnn;186
}187
}188
}189
排序.setEnabled(false);确定.setEnabled(false);190
}191
else if(e.getSource()==刷新)192
{ totalVote=0;193
voteMessage.setText("已统计了:"+totalVote+"张选票");194
name.setText(null);195
确认.setEnabled(true); 确定.setEnabled(true); 排序.setEnabled(true);196
for(int i=0;i<peopleNumber;i++)197
{ count[i]=0; 198
personVote[i].setText(null);199
p2_1.removeAll();200
} 201
}202
}203
}204

205
//例子4206
import java.awt.*;import java.awt.event.*;207
public class Example13_4 extends java.applet.Applet implements208
ItemListener,ActionListener209
{ Choice choice; 210
TextField text;211
TextArea area;212
Button add,del;213
public void init()214
{ choice=new Choice(); 215
text=new TextField(8);216
area=new TextArea(6,15); 217
choice.add("音乐天地"); 218
choice.add("武术天地");219
choice.add("象棋乐园"); 220
choice.add("交友聊天");221
add=new Button("添加");222
del=new Button("删除");223
add.addActionListener(this);del.addActionListener(this);224
choice.addItemListener(this);225
add(choice); 226
add(del);add(text);add(add);add(area);227
}228
public void itemStateChanged(ItemEvent e)229
{ String name=choice.getSelectedItem();230
int index=choice.getSelectedIndex();231
area.setText("\n"+index+":"+name);232
}233
public void actionPerformed(ActionEvent e)234
{ if(e.getSource()==add||e.getSource()==text)235
{ String name=text.getText();236
if(name.length()>0)237
{ choice.add(name);238
choice.select(name);239
area.append("\n添加"+name);240
}241
}242
else if(e.getSource()==del)243
{ choice.remove(choice.getSelectedIndex());244
area.append("\n删除"+choice.getSelectedItem());245
}246
}247
} 248

249
//例子5250
import java.applet.*;import java.awt.*;import java.awt.event.*;251
public class Example13_5 extends Applet implements ItemListener,ActionListener252
{ List list1,list2; 253
TextArea text1,text2; int index=0;254
public void init()255
{ list1=new List(3,false); list2=new List(3,false);256
text1=new TextArea(6,15); text2=new TextArea(6,15);257
list1.add("计算1+2+
"); list1.add("计算1*1+2*2+3*3
");258
list1.add("计算1*1*1+2*2*2+3*3*3
");259
for(int i=1;i<=100;i++)260
{ list2.add("前"+i+"项和");261
}262
add(list1);add(list2);add(text1);add(text2);263
list1.addItemListener(this); list2.addActionListener(this);264
} 265
public void itemStateChanged(ItemEvent e)266
{ if(e.getItemSelectable()==list1)267
{ text1.setText(list1.getSelectedItem());268
index=list1.getSelectedIndex();269
}270
}271
public void actionPerformed(ActionEvent e)272
{ int n=list2.getSelectedIndex(),sum=0;273
String name=list2.getSelectedItem();274
switch(index)275
{ case 0:276
for(int i=1;i<=n+1;i++)277
{ sum=sum+i;278
}279
break;280
case 1:281
for(int i=1;i<=n+1;i++)282
{ sum=sum+i*i;283
}284
break;285
case 2:286
for(int i=1;i<=n+1;i++)287
{ sum=sum+i*i*i;288
}289
break;290
default :291
sum=-100;292
} 293
text2.setText(name+"等于"+sum); 294
}295
}296



浙公网安备 33010602011771号