昨天休息了一天,今天继续。。。。。
//这个是一个计算平方根的APPLET程序
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Ex7_1 extends Applet implements ActionListener
{
TextField text;
Button buttonEnter,buttonQuit;
public void init() //设置基本的组件
{
text=new TextField("0",10);
add(text);
buttonEnter=new Button("确定");
buttonQuit=new Button("清零");
add(buttonEnter);
add(buttonQuit);
buttonEnter.addActionListener(this); //设置监听
buttonQuit.addActionListener(this);
text.addActionListener(this);
}
public void paint(Graphics g)
{
g.drawString("在文本框输入数字字符回车或单击按钮",10,100);
g.drawString("在文本框显示该数的平方根",10,120);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==buttonEnter||e.getSource()==text)
{
double number=0;
try //捕捉异常NumberFormatException
{
number=Double.valueOf(text.getText()).doubleValue();
text.setText(" "+Math.sqrt(number));
}
catch(NumberFormatException event)
{
text.setText("请输入数字字符");
}
}
else if(e.getSource()==buttonQuit)
{
text.setText("0");
}
}
}
//这一类程序必须实现init()方法,并且用actionPerfomed()方法实现监听
//这是一个简单的实现了加减乘除的APPLET计算器程序
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Ex7_2b extends Applet implements ActionListener
{
TextField text1;
TextField text2;
TextField text3;
double number1=0,number2=0;
int flag1=0,flag2=0; //定义flag来处理强行非数字字符计算的情况,1标志为有效
Button buttonAdd,buttonSub,buttonMul,buttonDiv;
public void init()
{
text1=new TextField("0",20); //init的编写结构一般为:分配空间,添加进组件,注册监听
text2=new TextField("0",20);
text3=new TextField("0",20);
add(text1);
add(text2);
add(text3);
buttonAdd=new Button("加");
buttonSub=new Button("减");
buttonMul=new Button("乘");
buttonDiv=new Button("除");
add(buttonAdd);
add(buttonSub);
add(buttonMul);
add(buttonDiv);
buttonAdd.addActionListener(this);
buttonSub.addActionListener(this);
buttonMul.addActionListener(this);
buttonDiv.addActionListener(this);
text1.addActionListener(this);
text2.addActionListener(this);
text3.addActionListener(this);
}
public void paint(Graphics g)
{
g.drawString("在前两个文本框中输入要参与计算的两个数,在最后一个文本框中显示结果",50,100);
g.drawString("四个按钮代表加减乘除四种计算",50,120);
}
public void actionPerformed(ActionEvent e)
{
text3.setText(" ");
if(e.getSource()==buttonAdd)this.Addaction(); //只对多关心的事件做出反应,而把异常归并到相关事件的处理中去
if(e.getSource()==buttonSub)this.Subaction(); //因为我不关心文本框的输入,而只要能够在计算时提取其中的数据//就可以了,故不对其产生的事件反应
if(e.getSource()==buttonMul)this.Mulaction();
if(e.getSource()==buttonDiv)this.Divaction();
}
public void Text1action() //要注意标志的清零
{
try
{
number1=Double.valueOf(text1.getText()).doubleValue();
flag1=0;
}
catch(NumberFormatException event)
{
text1.setText("请输入数字字符");
flag1=1;
}
}
public void Text2action()
{
try
{
number2=Double.valueOf(text2.getText()).doubleValue();
flag2=0;
}
catch(NumberFormatException event)
{
text2.setText("请输入数字字符");
flag2=1;
}
}
public void Addaction()
{
Text1action();
Text2action();
if(flag1==0&&flag2==0) //用标志屏蔽计算,以节省资源
{
String str1=String.valueOf(number1+number2);
text3.setText(" "+str1);
}
else
text3.setText("输入了非法字符无法计算!");
}
public void Subaction()
{
Text1action();
Text2action();
if(flag1==0&&flag2==0)
{
String str1=String.valueOf(number1-number2);
text3.setText(" "+str1);
}
else
text3.setText("输入了非法字符无法计算!");
}
public void Mulaction()
{
Text1action();
Text2action();
if(flag1==0&&flag2==0)
{
String str1=String.valueOf(number1*number2);
text3.setText(" "+str1);
}
else
text3.setText("输入了非法字符无法计算!");
}
public void Divaction()
{
Text1action();
Text2action();
if(flag1==0&&flag2==0)
{
String str1=String.valueOf(number1/number2);
text3.setText(" "+str1);
}
else
text3.setText("输入了非法字符无法计算!");
}
}
//本程序编写的几个要点
//1.首先,要明确你所关心的事件,actionPerformed方法是针对相关组件(事件源)的发生的
// 事件作出的反应,也就是说他必须对所有程序关心的事件作出反应!
//2.再者,actionPerformed中若作出的反应太繁琐,可以如本例以调用方法的形式来实现,以
// 达到简化程序的目的。
//3.关于标志的使用,这是一个较难的运用,必须在完全清楚程序运行的过程的基础上,为每个
// 事件设定相应标志并且要及时清零.故可以不用的话最好不用,程序简单才是王道!