📄 example13_3.java
字号:
import java.applet.*;import java.awt.*;import java.awt.event.*;
import java.util.StringTokenizer;
public class Example13_3 extends Applet implements ActionListener
{ Label 候名字=new Label("首先输入候选人的名字(人数不超过10,名字之间用逗号分隔):"),
统计选票=new Label("用下面的选择框统计选票:",Label.CENTER),
结果=new Label("选举结果:");
Button 确认=new Button("确认"),取消=new Button("取消"),
确定=new Button("确定"),刷新=new Button("刷新"),
排序=new Button("排序");
TextField name=new TextField(48); //输入候选人。
TextField voteMessage=new TextField(46); //显示选举信息。
Checkbox checkbox[]=new Checkbox[10]; //选择框数组,代表候选人。
TextField personVote[]=new TextField[10]; //文本条数组,显示每个人的得票情况。
int count[]=new int[10], //记录每个人的得票数。
totalVote=0, //总票数。
peopleNumber=0; //候选人个数。
Panel p2_1=new Panel(); //添加候选人的面板。
int 有效人数=3, //可选举的最多人数。
废票数=0,弃权票数=0;
public void init()
{ setLayout(new GridLayout(3,1));
Panel p1=new Panel(), //添加到小程序上部的面板和添加到该面板中的面板。
p1_1=new Panel(),p1_2=new Panel(),p1_3=new Panel();
p1.setLayout(new BorderLayout());
p1_1.add(候名字); p1_2.add(name);
p1_3.add(确认);p1_3.add(取消);p1_3.add(统计选票);
p1.add(p1_1,BorderLayout.NORTH);p1.add(p1_2,BorderLayout.CENTER);
p1.add(p1_3,BorderLayout.SOUTH);
Panel p2=new Panel(), //添加到小程序中间的面板p2,它里面的一个面板p2_1,
//将用来添加代表候选人的选择框。
p2_2=new Panel();
p2.setLayout(new BorderLayout());p2.setBackground(Color.cyan);
p2_1.setLayout(new GridLayout(2,5));
p2_2.add(确定); p2_2.add(刷新); p2_2.add(排序);
p2.add(p2_1,BorderLayout.CENTER);p2.add(p2_2,BorderLayout.SOUTH);
for(int i=0;i<=9;i++)
{ checkbox[i]=new Checkbox();
p2_1.add(checkbox[i]);
}
Panel p3=new Panel(), //添加到小程序底部的面板p3,及它里面的面板。
p3_1=new Panel(),p3_2=new Panel();
p3.setLayout(new BorderLayout());
p3_1.add(结果);p3_1.add(voteMessage);
p3_2.setLayout(new GridLayout(10,1));
for(int i=0;i<=9;i++)
{ personVote[i]=new TextField();
p3_2.add(personVote[i]);
}
ScrollPane scroll=new ScrollPane();
scroll.add(p3_2); //把p3_2添加到一个滚动窗体中。
p3.add(p3_1,BorderLayout.NORTH);
p3.add(scroll,BorderLayout.CENTER);
add(p1);add(p2); add(p3); //小程序添加这三个面板。
确认.addActionListener(this); 取消.addActionListener(this);
确定.addActionListener(this); 刷新.addActionListener(this);
排序.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{ String s[]=new String[10];
if(e.getSource()==确认)
{ p2_1.removeAll();
String s_name=name.getText();
//提取候选人的名字,名字用逗号(英文逗号或汉文逗号)分隔:
StringTokenizer fenxi=new StringTokenizer(s_name,",,");
peopleNumber=fenxi.countTokens(); //获取候选人的个数。
int i=0;
while(fenxi.hasMoreTokens()) //用单选框代表候选人,并添加到面板p2_1。
{
s[i]=fenxi.nextToken();
p2_1.add(checkbox[i]);
checkbox[i].setLabel(s[i]);
i++;
}
for(int k=0;k<peopleNumber;k++)
{ personVote[k].setText(null);
}
}
else if(e.getSource()==取消)
{ name.setText(null);
确认.setEnabled(true);
for(int k=0;k<peopleNumber;k++)
{ personVote[k].setText(null);
}
}
else if(e.getSource()==确定) //统计候选人的得票数目。
{ totalVote=totalVote+1; //记录下统计的票数。
确认.setEnabled(false);
//检查选票是否有效:
int number=0;
for(int k=0;k<peopleNumber;k++)
{ if(checkbox[k].getState())
{ number++;
}
}
if(number>有效人数)
{ 废票数++;
for(int k=0;k<peopleNumber;k++)
{ checkbox[k].setState(false);
}
}
else if(number==0)
{ 弃权票数++;
}
else if(number>0&&number<=有效人数)
{ for(int k=0;k<peopleNumber;k++)
{ if(checkbox[k].getState())
{ count[k]=count[k]+1;
checkbox[k].setState(false);
personVote[k].setText(checkbox[k].getLabel()+
" 的得票数:"+count[k]);
}
else
{ personVote[k].setText(checkbox[k].getLabel()+
" 的得票数:"+count[k]);
}
}
}
voteMessage.setText("已统计了:"+totalVote+"张选票,其中弃权票:"+
弃权票数+" 作废票:"+废票数);
}
else if(e.getSource()==排序) //对选举人按得票数,从大到小排序。
{ for(int i=0;i<peopleNumber;i++)
{ for(int j=i+1;j<peopleNumber;j++)
{ if(count[j]>count[i])
{ String str_temp=personVote[i].getText();
personVote[i].setText(personVote[j].getText());
personVote[j].setText(str_temp);
int nnn=count[i];count[i]=count[j];count[j]=nnn;
}
}
}
排序.setEnabled(false);确定.setEnabled(false);
}
else if(e.getSource()==刷新)
{ totalVote=0;
voteMessage.setText("已统计了:"+totalVote+"张选票");
name.setText(null);
确认.setEnabled(true); 确定.setEnabled(true); 排序.setEnabled(true);
for(int i=0;i<peopleNumber;i++)
{ count[i]=0;
personVote[i].setText(null);
p2_1.removeAll();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -