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
posted @ 2005-05-27 09:07  Rookie.Zhang  阅读(846)  评论(0编辑  收藏  举报