小应用程序Applet设计.docx
《小应用程序Applet设计.docx》由会员分享,可在线阅读,更多相关《小应用程序Applet设计.docx(12页珍藏版)》请在冰豆网上搜索。
小应用程序Applet设计
小应用程序Applet设计
一、课题内容和要求
内容:
设计和编写一个可以用鼠标操作的Applet小应用程序和相应的HTML页面,观察Applet的执行过程,测试程序鼠标用户交互操作的效果。
要求:
要求学生能在学习和理解课堂学习内容中JAVA小应用程序的基础上,通过实验,培养学生将JAVA小应用程序相关知识点(包括JAVAApplet和低级事件处理模型)有机结合,设计基于WEB浏览器的小应用程序的能力。
二、设计思路分析
classApp:
一个JavaApplet计算器的主类
publicvoidinit():
完成初始化applet
publicbooleanaction():
实现事件处理的方法
publicvoiddoOperator():
运算及运算结果输出操作
publicvoiddoForeScreen():
数字和小数点输出到文本框操作
publicvoiddoClear():
清空操作
三、概要设计
publicclassAppextendsApplet{
TextFieldtfAnswer;
Buttonb0,b1,b2,b3,b4,b5,b6,b7,b8,b9;
ButtonbPoint,bEqual,bPlus,bMinus,bClear,bMulti,bDivision;
StringOperatorCurrent,OperatorPre;
StringForeScreen,BackScreen;
booleanisFloat=false;
publicvoidinit();
publicbooleanaction(Evente,Objecto);
publicvoiddoOperator()
publicvoiddoForeScreen(Strings);
publicvoiddoClear();
}
事件处理:
运算及运算结果输出:
四、详细设计
Java代码:
importjava.awt.*;
importjava.applet.*;
publicclassAppextendsApplet{
TextFieldtfAnswer;//定义变量
Buttonb0,b1,b2,b3,b4,b5,b6,b7,b8,b9;
ButtonbPoint,bEqual,bPlus,bMinus,bClear,bMulti,bDivision;
StringOperatorCurrent,OperatorPre;
StringForeScreen,BackScreen;
booleanisFloat=false;
publicvoidinit(){//初始化
OperatorCurrent=newString("");
OperatorPre=newString("");
ForeScreen=newString("0");//保证输入字符串不为空防止计算错误
BackScreen=newString("");
setBackground(Color.gray);
setLayout(null);//设为空布局便于自定义组件位置
tfAnswer=newTextField();//设置文本框样式
tfAnswer.setBounds(20,20,175,40);
tfAnswer.setFont(newFont(BackScreen,Font.BOLD,28));
add(tfAnswer);
tfAnswer.setText(ForeScreen);
bClear=newButton("C");//设置按钮样式
bClear.setBounds(20,70,40,40);
add(bClear);
bDivision=newButton("/");
bDivision.setBackground(Color.green);
bDivision.setBounds(65,70,40,40);
add(bDivision);
bMulti=newButton("*");
bMulti.setBackground(Color.green);
bMulti.setBounds(110,70,40,40);
add(bMulti);
bMinus=newButton("-");
bMinus.setBackground(Color.green);
bMinus.setBounds(155,70,40,40);
add(bMinus);
b7=newButton("7");
b7.setBounds(20,115,40,40);
b7.setBackground(Color.orange);
add(b7);
b8=newButton("8");
b8.setBackground(Color.orange);
b8.setBounds(65,115,40,40);
add(b8);
b9=newButton("9");
b9.setBackground(Color.orange);
b9.setBounds(110,115,40,40);
add(b9);
bPlus=newButton("+");
bPlus.setBackground(Color.green);
bPlus.setBounds(155,115,40,85);
add(bPlus);
b4=newButton("4");
b4.setBackground(Color.orange);
b4.setBounds(20,160,40,40);
add(b4);
b5=newButton("5");
b5.setBackground(Color.orange);
b5.setBounds(65,160,40,40);
add(b5);
b6=newButton("6");
b6.setBackground(Color.orange);
b6.setBounds(110,160,40,40);
add(b6);
b1=newButton("1");
b1.setBackground(Color.orange);
b1.setBounds(20,205,40,40);
add(b1);
b2=newButton("2");
b2.setBackground(Color.orange);
b2.setBounds(65,205,40,40);
add(b2);
b3=newButton("3");
b3.setBackground(Color.orange);
b3.setBounds(110,205,40,40);
add(b3);
bEqual=newButton("=");
bEqual.setBackground(Color.green);
bEqual.setBounds(155,205,40,85);
add(bEqual);
b0=newButton("0");
b0.setBackground(Color.orange);
b0.setBounds(20,250,85,40);
add(b0);
bPoint=newButton(".");
bPoint.setBackground(Color.orange);
bPoint.setBounds(110,250,40,40);
add(bPoint);
}
publicbooleanaction(Evente,Objecto){//实现事件处理的方法
Strings=newString("");
if((e.target==b0)||(e.target==b1)||(e.target==b2)
||(e.target==b3)||(e.target==b4)||(e.target==b5)
||(e.target==b6)||(e.target==b7)||(e.target==b8)
||(e.target==b9)){//获取数字按钮数据并在控制台和文本框输出
if(e.target!
=bPoint){//获取数字
s=(String)o;
doForeScreen(s);
}
}
if((e.target==bPoint)&&!
ForeScreen.contains(".")){//保证原数不含小数点的情况下获取小数点并在控制台和文本框输出
s=(String)o;
if(ForeScreen.equals(""))//原来没有输入数据则用0.
{
doForeScreen("0.");
}else//原来有输入数据则用.
{
doForeScreen(s);
}
}
if(e.target==bClear){//清除按钮进行清除操作
doClear();
}
if((e.target==bMulti)||(e.target==bDivision)
||(e.target==bPlus)||(e.target==bMinus)
||(e.target==bEqual)){//加减乘除等于按钮获取运算操作符并进行运算操作
if(ForeScreen!
=""){//重新输入数字进行运算操作
OperatorCurrent=((String)o);
doOperator();
}else{//没有重新输入数字则作为上一运算符--->保证不输入连续的同一运算符
OperatorPre=((String)o);
}
}
returntrue;
}
publicvoiddoOperator(){//运算及运算结果输出操作
doubledFore,dBack;
Doubled;
if(OperatorPre.equals("")){//上一运算符没有则直接输出
BackScreen=ForeScreen;//输入的数据转入后台并清空,用后台输出它
ForeScreen="";
tfAnswer.setText(BackScreen);
repaint();
}else{//上一运算符存在则运算后输出
dFore=(newDouble(ForeScreen)).doubleValue();
dBack=(newDouble(BackScreen)).doubleValue();
ForeScreen="";//运算结果转入后台并清空,用后台输出它
BackScreen=tfAnswer.getText();
if(OperatorPre.equals("+")){
d=newDouble((dBack+dFore));
BackScreen=d.toString();
}
if(OperatorPre.equals("-")){
d=newDouble((dBack-dFore));
BackScreen=d.toString();
}
if(OperatorPre.equals("*")){
d=newDouble((dBack*dFore));
BackScreen=d.toString();
}
if(OperatorPre.equals("/")){
d=newDouble((dBack/dFore));
BackScreen=d.toString();
}
tfAnswer.setText(BackScreen);
repaint();
}
OperatorPre=OperatorCurrent;//现运算符变上一运算符
repaint();
}
publicvoiddoForeScreen(Strings){//数字和小数点输出到文本框操作
ForeScreen+=s;
if(ForeScreen.length()>1&&ForeScreen.startsWith("0")
&&!
ForeScreen.contains("."))//以0开头的长度大于一的非小数去掉开头的0
ForeScreen=ForeScreen.substring
(1);
tfAnswer.setText(ForeScreen);
repaint();
}
publicvoiddoClear(){//清空操作
OperatorCurrent="";
OperatorPre="";
ForeScreen="0";
BackScreen="";
isFloat=false;
tfAnswer.setText(ForeScreen);
repaint();
}
}
Html代码:
DOCTYPEhtml>
"JavaApplet计算器"