2 qq 27626645 qq_27626645 于 2016.02.13 11:16 提问

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("+");
            }

        }
    });



`

3个回答

fk002008
fk002008   2016.02.13 17:51
已采纳

现在不能设计上述的第二步
建议采用分而治之的思想

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类进行对应的运算
                    //把结果写到这个输出框中
    }
fk002008
fk002008 getInteger的注释Determines the integer value of the system property with the specified name 读取系统属性的变量 通过 java.lang.System#getProperty来进行读取的
2 年多之前 回复
fk002008
fk002008 nteger.getInteger(tf.getText()) 错了 改成 Integer.parseInt进行 转换。 使用这个getInteger你得出的值是null
2 年多之前 回复
fk002008
fk002008 回复forhusa---: 你使用了匿名内部类的话,每一个button都要这么写。每一个button都有对应的监听器,所以内部就不用这个e.getSource();进行判断事件源了。将这个if(obj==b1)的判断去掉)
2 年多之前 回复
qq_27626645
qq_27626645 现在不能出得数 求大神帮忙
2 年多之前 回复
qq_27626645
qq_27626645 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("+"); } } });
2 年多之前 回复
qq_27626645
qq_27626645 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("+"); } } });
2 年多之前 回复
qq_27626645
qq_27626645 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("+"); } } });
2 年多之前 回复
qq_27626645
qq_27626645 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("+"); } } });
2 年多之前 回复
qq_27626645
qq_27626645 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("+"); } } });
2 年多之前 回复
leaf_130
leaf_130   2016.02.13 11:27

我没记错是课本上的一道例题
其实就是按钮与事件的绑定:按下 plus 在两个数值文本框之间显示+号,你只需要定义一个label于两个数值文本框中间,
当点击按钮“plus”触发响应事件,将该label的值改为 “+” 即可(其他同理)

91program
91program   Ds   Rxr 2016.02.13 12:53

符号处放一个类似于 = 号处的控件,一般是 Label。
整个过程需要完成对 Label 和三个 Edit 控件的赋值和获取其中内容的过程。
只需要搞清楚一个,如 + 的实现过程,其它就简单了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
ELM——HOG
代码有问题 出现内存访问错误 求大神帮忙修改
新浪漫步者6.1
感觉很不好的一个软件 求更好的 有没有大神帮忙!
fifo to uart
VHDL 带fifo的uart 源代码,求大神帮忙修改。
在母串中查找某子串出现的最后位置
不使用STL,设计一个算法,在串str中查找串substr最后一次出现的位置
掌百模拟的雏形
无,不能登录了。求大神改改。我发了一个帖子。大家都帮忙看看
java 寻找指定字符最后出现的位置
java 寻找指定字符最后出现的位置 java 寻找指定字符最后出现的位置
cad lisp 五金模具外挂 快捷命令
cad 五金模具外挂,求大神帮忙破解。 有时候加载用不了,很无语。
office解码
我不会用 我下载的时候只有这个 又不能解码 所以 求大神帮忙
一个简单游戏的程序
简单游戏的程序代码,大神们帮忙看看。简单游戏的程序代码,大神们帮忙看看。简单游戏的程序代码,大神们帮忙看看。简单游戏的程序代码,大神们帮忙看看。简单游戏的程序代码,大神们帮忙看看。
combobox控件
给予ztree和jq的combo-box控件,有搜索功能,支持ajax加载数据,抛砖引玉,求大神帮忙优化,搜索算法和其他的