Java 程序题一道,各位大大帮帮忙
题目6:计算器应用程序的设计实现设计要求:1.设计的计算器应用程序是基于AWT或者Swing的2.可以完成加减乘除以及取余运算3.在能够完成上面的加减乘除取余的基础上增加...
题目6:计算器应用程序的设计实现
设计要求:
1. 设计的计算器应用程序是基于AWT或者Swing的
2. 可以完成加减乘除以及取余运算
3. 在能够完成上面的加减乘除取余的基础上增加日期计算功能,能够计算两个日期之间相差的天数
设计思路:
对于基于AWT的应用程序,应用程序继承自框架类(Frame),使用框架类的默认布局管理器,将单文本域TextField display加入到“Morth”区域,包含各种按钮的面板Panel p加入到“Center”区域
add(display,"North");
add(p,"Center");
面板Panel p采用4行4列的网格布局,然后将数字按钮和运算符按钮添加到面板中。添加按钮采用内部方法addButton()方法,此方法主要完成将按钮添加到面板中同时为按钮注册时间监听器:
Button b=new Button(s);
c.add(b);
b.addActionListener(this);
事件处理方法void actionPerformed(ActionEvent e)完成主要的按钮事件处理,事件处理分为数字按钮事件和运算符按钮事件。
如果是数字按钮事件,则要进一步区分是重新计算时输入的数字还是计算中输入的数字。如果是新开始输入的数字,则直接将数字输入到单行文本域中。
if(start){
display.setText(s);
}
如果是中间输入的数字,则将原来单行文本域中的数字串和新输入的数字拼接显示在文本域中。
else display.setText(display.getText()+s);
如果是运算符按钮事件,也要进一步区分是重新开始时输入的还是计算中间输入的运算符。如果是重新计算时输入的运算符且是“-”符,则作为负号使用,否则作为运算符使用。
if(s.equals("-")){
display.setText(s);
start=false;
}
else op=s;
如果是中间输入的运算符,则要调用计算函数void calculate(double x)进行计算,同时将结果显示
public void calculate(double x){
if(op.equals("+")) arg+=x;
else if(op.equals("-")) arg-=x;
else if(op.equals("*")) arg*=x;
else if(op.equals("/")) arg/=x;
else if(op.equals("=")) arg=x;
display.setText(""+arg);
}
对于要基于SWING的应用程序,则继承JFrame,同时引入javax.swing包。
import javax.swing.*;
在上面的基础上新增了一个内部日期类Day,其中方法daysBetween方法可以实现计算两个日期之间相差的天数。
同时新增了一个算术/日期计算的按钮,用以选择计算的类型,相应的增加 了一个私有布尔类型变量isArithmetic来标志当前进行的是何种类型的计算,为true表示的算术运算,false表明是日期运算,同时增加了一个用以显示当前状态的不可编辑的当行文本域,显示“ARITHMETIC”表示当前进行的是算术运算,显示“DATE”表示当前进行的是日期计算,另外添加了一个清除按钮“CE”,用以将显示结果的当行文本域清空,同时将各个参数设置为默认值
算术/日期转换按钮(“A/D”)的事件处理委托给无名内部类来处理。
adButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
isArithmetic=!isArithmetic;
if(isArithmetic){ //如果是算术运算
display.setText("0");
status.setText("ARITHMETIC");
}
else{ //是日期计算
display.setText("");
status.setText("DATE");
}
arg=0;
strDate="";
op="=";
start=true;
}
});
当年的新手问题了~~虽然现在让我自己写还有点问题~~不过网上一找一大把~~嘿嘿~~ 展开
设计要求:
1. 设计的计算器应用程序是基于AWT或者Swing的
2. 可以完成加减乘除以及取余运算
3. 在能够完成上面的加减乘除取余的基础上增加日期计算功能,能够计算两个日期之间相差的天数
设计思路:
对于基于AWT的应用程序,应用程序继承自框架类(Frame),使用框架类的默认布局管理器,将单文本域TextField display加入到“Morth”区域,包含各种按钮的面板Panel p加入到“Center”区域
add(display,"North");
add(p,"Center");
面板Panel p采用4行4列的网格布局,然后将数字按钮和运算符按钮添加到面板中。添加按钮采用内部方法addButton()方法,此方法主要完成将按钮添加到面板中同时为按钮注册时间监听器:
Button b=new Button(s);
c.add(b);
b.addActionListener(this);
事件处理方法void actionPerformed(ActionEvent e)完成主要的按钮事件处理,事件处理分为数字按钮事件和运算符按钮事件。
如果是数字按钮事件,则要进一步区分是重新计算时输入的数字还是计算中输入的数字。如果是新开始输入的数字,则直接将数字输入到单行文本域中。
if(start){
display.setText(s);
}
如果是中间输入的数字,则将原来单行文本域中的数字串和新输入的数字拼接显示在文本域中。
else display.setText(display.getText()+s);
如果是运算符按钮事件,也要进一步区分是重新开始时输入的还是计算中间输入的运算符。如果是重新计算时输入的运算符且是“-”符,则作为负号使用,否则作为运算符使用。
if(s.equals("-")){
display.setText(s);
start=false;
}
else op=s;
如果是中间输入的运算符,则要调用计算函数void calculate(double x)进行计算,同时将结果显示
public void calculate(double x){
if(op.equals("+")) arg+=x;
else if(op.equals("-")) arg-=x;
else if(op.equals("*")) arg*=x;
else if(op.equals("/")) arg/=x;
else if(op.equals("=")) arg=x;
display.setText(""+arg);
}
对于要基于SWING的应用程序,则继承JFrame,同时引入javax.swing包。
import javax.swing.*;
在上面的基础上新增了一个内部日期类Day,其中方法daysBetween方法可以实现计算两个日期之间相差的天数。
同时新增了一个算术/日期计算的按钮,用以选择计算的类型,相应的增加 了一个私有布尔类型变量isArithmetic来标志当前进行的是何种类型的计算,为true表示的算术运算,false表明是日期运算,同时增加了一个用以显示当前状态的不可编辑的当行文本域,显示“ARITHMETIC”表示当前进行的是算术运算,显示“DATE”表示当前进行的是日期计算,另外添加了一个清除按钮“CE”,用以将显示结果的当行文本域清空,同时将各个参数设置为默认值
算术/日期转换按钮(“A/D”)的事件处理委托给无名内部类来处理。
adButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
isArithmetic=!isArithmetic;
if(isArithmetic){ //如果是算术运算
display.setText("0");
status.setText("ARITHMETIC");
}
else{ //是日期计算
display.setText("");
status.setText("DATE");
}
arg=0;
strDate="";
op="=";
start=true;
}
});
当年的新手问题了~~虽然现在让我自己写还有点问题~~不过网上一找一大把~~嘿嘿~~ 展开
1个回答
展开全部
计算器源码http://user.qzone.qq.com/346612263 可以自行扩展功能
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询