Java2实用教程(第二版)程序代码——第十三章 选择型组件
1//例子1
2import java.applet.*;import java.awt.*;
3class 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}
12class 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}
21public 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
31import java.awt.*;import java.awt.event.*;import java.applet.*;
32public 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
58import java.applet.*;import java.awt.*;import java.awt.event.*;
59import java.util.StringTokenizer;
60public 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
206import java.awt.*;import java.awt.event.*;
207public class Example13_4 extends java.applet.Applet implements
208ItemListener,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
250import java.applet.*;import java.awt.*;import java.awt.event.*;
251public 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
2import java.applet.*;import java.awt.*;
3class 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}
12class 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}
21public 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
31import java.awt.*;import java.awt.event.*;import java.applet.*;
32public 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
58import java.applet.*;import java.awt.*;import java.awt.event.*;
59import java.util.StringTokenizer;
60public 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
206import java.awt.*;import java.awt.event.*;
207public class Example13_4 extends java.applet.Applet implements
208ItemListener,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
250import java.applet.*;import java.awt.*;import java.awt.event.*;
251public 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