问题描述
- java 简易计算器,最后得数不能出现,求大神帮忙
-
(1)编写一个简易计算器程序,其界面如下图所示:
(2)当按下“+”按钮时,两个数值文本框之间应显示“+”号,同时相加结果显示在第三个文本框内(如下图所示)。类似处理“-”、“*”和“/”按钮。
现在第二步能够出现加号 就是不能正确运算。如下代码,注释的地方为什么不能运行,该怎么做才能做到当按下加的按钮b1时,同时出现加号和得数?这里的tf和tf1是要计算的两个数```b1.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) { Object obj=e.getSource(); //int a=Integer.getInteger(tf.getText()); //int b=Integer.getInteger(tf1.getText()); //int result; //result=a+b; if(obj==b1){ //tf2.setText(Integer.toString(result)); l1.setText("+"); } } });
`
解决方案
现在不能设计上述的第二步
建议采用分而治之的思想
1--首先要进行运算,那么你就设计运算的类Operator
它里面有 add minus等计算方法能够实现我们的运算.
这个可以融合工厂方法模式和单例模式设计,有兴趣可以了解下
2--为了把操作符显示到界面上面,你需要定义一个lable的控件在2个输入框之间,类似你定义的等号一样
后面可以改变lable的值
建议你把这个界面的表示都写在property文件中,然后程序从property文件中读取界面的表示文字。
可以了解下程序如何读取propertiy文件的内容
3--为了能够使按钮触发事件动起来,你要注册监听器
可以使用你这个界面类自身充当监听器
在你的类头处加上 implements ActionListener
然后让button注册监听器
plus.addActionListener(this);
minus.addActionListener(this);
...
...
然后实现接口方法
public void actionPerformed(ActionEvent e){
//加法按钮压下
if(e.getSource()==plus){
//先把那个lable的文字显示成这个+
lable.setText("+");
} else if(e.getSource == minus){
....
}...
//然后读取两个text框中的数字
//然后调用你那个Operator类进行对应的运算
//把结果写到这个输出框中
}
解决方案二:
我没记错是课本上的一道例题
其实就是按钮与事件的绑定:按下 plus 在两个数值文本框之间显示+号,你只需要定义一个label于两个数值文本框中间,
当点击按钮“plus”触发响应事件,将该label的值改为 “+” 即可(其他同理)
解决方案三:
符号处放一个类似于 = 号处的控件,一般是 Label。
整个过程需要完成对 Label 和三个 Edit 控件的赋值和获取其中内容的过程。
只需要搞清楚一个,如 + 的实现过程,其它就简单了。