[attach]13961[/attach]
为什么这个里面的构造函数没有做什么,但是程序却可以运行呢?
还没做什么 全让构造函数做了!!..
帮你改了,可以用了
你自己慢慢看吧
/*
* select.java
*
* Created on 2006年11月19日, 下午8:32
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/**
*
* @author lbf
*/
//Label--标签,它用来给程序输出文本信息,没有框来显示它的范围。
/*Checkbox--复选框,用来表示选项是否被选中,一般在该选项前能显示是否被选中
并可以通过鼠标点击来改变状态 */
//Button--按钮,对应一个特定的操作,用鼠标单击它就开始该操作。
/*文本编辑区--Edit,TextField或TextArea--形成的区域可以接受用户的文本输入,并有
一定的编辑功能。它可以是单行的或者多行的,单行编辑区只能由一行文本
,不会折行,而多行文本区,可以在内容超出一行容量时自动换行。*/
//Panel--用来建立面板
//GridLayout(int m,int n)创建布局对象,指定划分网格的行数m和列数n
/*BorderLayout--这种布局将容器划分为东南西北中五个区域,中间的区域最大。没加入
一个组件都应该指明这个组件加在哪个区域中。*/
/*StringTokenizer(String s)为字符串s构造一个分析器.使用默认的分隔符稽核,即空
格符(若干个空格符被看作一个),换行符,回车符,TAB
符,进纸符.
StringTokenizer(String s,String delim)为字符串s构造一个分析器。参数dilim中的
字符被作为分隔符. */
/* ScrollPane()--创建滚动窗口,滚动条初始不可见,当添加的组件的可见范围大于滚动
窗口时,滚动条自动出现。
ScrollPane(int a)--创建滚动窗口,参数a指定滚动条的初始状态。 */
import java.awt.*;
import java.awt.event.*;
import java.util.StringTokenizer;
class selects extends Frame implements ActionListener {
class win extends Frame {
TextArea b2;
Panel t=new Panel();
win(String s) {
super(s);
setSize(400,400);
setBackground(Color.white);
setVisible(false);
b2=new TextArea("\n\n\t\t************************\n\n\t\t^_^ 欢迎使用本选举程序\n\n\t\t************************\n\n\n 本程序为用户提供了处理选举人和统计选举人数的功能\n\n 用户最多可输入十个候选人,每位投票人最多可以投三票,多\n 投视为作废。投票结束后程序可以自动按票数多少对选举人进行\n 排序。");
add(b2);
validate();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
setVisible(false);
win.this.dispose();
}
});
}
}
Label 候名字=new Label("首先输入候选人的名字(人数不超过10,名字间用头号分隔)"),
统计选票=new Label("请用下面的选择框统计选票:",Label.CENTER),
结果=new Label("选举结果:");
Button 确认=new Button("确认"),取消=new Button("取消"),
确定=new Button("确定"),刷新=new Button("刷新"),
排序=new Button("排序");
Button b1=new Button("选举规则");
//输入候选人
TextField name=new TextField(48);//文本框的长度为48个字符长,可以在文本框中输入若干个字符
//显示选举信息
TextField voteMessage=new TextField(46);
//选择框数组,代表候选人
Checkbox checkbox[]=new Checkbox[10];//选择框右面的名称由参数S指定。
//文本条数组,显示每个人的得票情况
TextField personVote[]=new TextField[10];
int count[]=new int [10], //记录每个人的得票数
totalVote=0, //总票数
peopleNumber=0; //候选人个数
Panel p2_1=new Panel(); //添加候选人面板
int 有效人数=3, 废票数=0, 弃权票数=0; //可选举的最多人数
//public
selects() //设计面板
{
setTitle("投票系统");
//容器可以使用方法:setLayout(布局对象):来设置自己的布局。
setLayout(new GridLayout(3,1));
Panel p1=new Panel(),
p1_1=new Panel(),p1_2=new Panel(),p1_3=new Panel(),p1_4=new Panel();
p1.setLayout(new BorderLayout());
p1_1.add(候名字);p1_2.add(name);
p1_3.add(确认);p1_3.add(取消);p1_3.add(统计选票);p1_4.add(b1);
p1.add(p1_1,BorderLayout.NORTH);
p1.add(p1_2,BorderLayout.CENTER);
p1.add(p1_3,BorderLayout.SOUTH);
p1.add(p1_4,BorderLayout.EAST);
//添加到小程序中的面板p2,它里面的一个面板p2_1,将用来添加代表候选人的选择框
Panel p2=new Panel(),
p2_2=new Panel();
p2.setLayout(new BorderLayout());
p2.setBackground(Color.yellow);
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); //小程序添加这三个面板
b1.addActionListener(this);
确认.addActionListener(this);
取消.addActionListener(this);
确定.addActionListener(this);
刷新.addActionListener(this);
排序.addActionListener(this);
this.setSize(500,500);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
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<=4;i++) {
count[i]=0;
personVote[i].setText(null);
p2_1.removeAll();
}
} else if(e.getSource()==b1) {
win qq=new win("选举规则窗口");
qq.setVisible(true);
}
}
}
public class select {
public static void main(String args[]) {
//selects tt=
new selects();
//tt.selects();
}
}