| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 867 人关注过本帖
标题:[求助]杯具中的洗具。 俺内个计算器终于出炉了。请大家前来指点。小弟在线等 ...
只看楼主 加入收藏
心无旁骛
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2010-2-8
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:4 
[求助]杯具中的洗具。 俺内个计算器终于出炉了。请大家前来指点。小弟在线等。
    大家好。我是上次那个为做个计算器苦恼几个月的苦命孩儿。
  
  首先给大家拜个年,祝大家身体健康,万事如意。天天快乐。  

   接下来说正事:

 老天有眼啊,那个所谓的‘计算器’终于出炉了。

   但是是个很另类的东西。。 (为什么我写的程序总这样!)

  附件里是我写的代码,请各位帮忙看下 指点下。多多提出批抨。小弟在此谢谢了。

  问题1:这个计算器只做了几个简单按钮,没做数字键,目前只能通过键盘输入,但是
         这个窗口打开后直接按数字是不管用的。有没有什么方法能让这窗口打开后就直接
         默认在文本框内输入。。
  
  问题2:算法采用的是 输入一个数 当按‘+-*/’中任意一个的时候 获取文本区的东西。
         然后再输入第二个数,当按‘=’的时候 会再次获取文本区的内容,并进行计算。
         我想,计算器应该不是这个算法吧。我实在没办法 这么弄了。
  
  问题3:请大家说说这程序另类所在,指点小弟下。正常计算器应该怎么入手。

 谢谢大家肯为小弟浪费几分钟时间。 小弟衷心的感谢。 祝各位在新的一年里 合家欢乐。
  工作更上一层楼。
mainFrame.rar (1.31 KB)


[ 本帖最后由 心无旁骛 于 2010-2-20 16:17 编辑 ]
搜索更多相关主题的帖子: 出炉 计算器 
2010-02-20 12:16
心无旁骛
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2010-2-8
收藏
得分:0 
没人理我啊
。。。。。。。。。。。
      。。。。。。。。。。。
            。。。。。。。。。。。
 
        请大家回答这3个问题啊
2010-02-21 12:57
baifenghan
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:258
专家分:952
注 册:2006-3-17
收藏
得分:10 
package test;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

//首先写一段说明,我稍微加了点修改,你的思路应该是这样:
//1.首先一开始就在文本框输入一个数字,这个代表第一个操作数
//2.然后按下一个操作的按钮,可能是+或者其他,给这个按钮的监听器加入的操作就是把输入的值传给你的a,就是第一个操作数,
//然后清空文本框。这里有一个关键点,就是有一个属性来标记你做的是什么操作,比如+,也就是你里面的fh的功能
//3.然后在文本框中再次输入一个数字,作为另一个操作数。
//4.然后按下等于这个按钮,给这个按钮的监听器加入的操作就是把输入的值传给你的b,并且计算结果,
//把文本框的文本赋值为你计算的结果

public class mainFrame extends JFrame
{
   
    static final int WIDE = 200;
    static final int HIGHT = 130;
    public String a = "0";
    public String b = "0";
    public int fh = 4;
    public mainFrame()
    {
        setTitle("-_-");
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setSize(WIDE,HIGHT);
        setLocation(300,200);
        setResizable(false);
        setVisible(true);
        
        JPanel PANEL = new JPanel();
        setContentPane(PANEL);
        
        
        final JTextField t1 = new JTextField(15);        // 文本框
        t1.setHorizontalAlignment(JTextField.RIGHT);
        PANEL.add(t1);
        t1.addKeyListener(new KeyAdapter()
        {
             public void keyTyped(KeyEvent event)
             {
                  char ch=event.getKeyChar();
                 if(ch<'0'||ch>'9')
                 {
                      event.consume();
                 }
             }
        });
        
        JButton b3 = new JButton("-");                  //减号按钮
        PANEL.add(b3);
        b3.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent Event)
            {
                a = t1.getText();
                fh = 0;
               
              //把文本框清空
                t1.setText(null);
                //使得文本框重新获得输入焦点
                t1.grabFocus();
            }
        });
        
        JButton b1 = new JButton("+");                  //加号按钮
        PANEL.add(b1);
        b1.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent Event)
            {
                a = t1.getText();
                fh = 1;
               
              //把文本框清空
                t1.setText(null);
                //使得文本框重新获得输入焦点
                t1.grabFocus();
            }
        });
        
        JButton b4 = new JButton("*");
        PANEL.add(b4);                                     //乘号按钮
        b4.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent Event)
            {
                a = t1.getText();
                fh = 2;
               
              //把文本框清空
                t1.setText(null);
                //使得文本框重新获得输入焦点
                t1.grabFocus();
            }
        });
        
        JButton b5 = new JButton("/");                      //除号按钮
        PANEL.add(b5);
        b5.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent Event)
            {
                a = t1.getText();
                fh = 3;
               
              //把文本框清空
                t1.setText(null);
                //使得文本框重新获得输入焦点
                t1.grabFocus();
            }
        });
        
        JButton b2 = new JButton("=");                   //等号按钮
        PANEL.add(b2);
        b2.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent Event)
            {
                b = t1.getText();
            
                if(fh==1)
                {
                    t1.setText( String.valueOf( Integer.parseInt(a) + Integer.parseInt(b) ));
                }
                else if(fh==0)
                {
                    t1.setText( String.valueOf( Integer.parseInt(a) - Integer.parseInt(b) ));
                }
                else if(fh==2)
                {
                    t1.setText( String.valueOf( Integer.parseInt(a) * Integer.parseInt(b) ));
                }
                else if(fh==3)
                {
                    t1.setText( String.valueOf( Integer.parseInt(a) / Integer.parseInt(b) ));
                }
            }
        });
        
        JButton exit = new JButton("退出");
        PANEL.add(exit);
        exit.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent Event)
            {
                System.exit(0);
            }
        });
        
        //注意这里加入的这一句,否则我运行时候没有显示出界面组件
        this.validate();
    }
    public static void main(String[] args)
    {
         new mainFrame();
    }
}
      
 

上面我稍微改了下,然后回答下你的问题:
1.你说的问题1不存在啊,我打开时可以输入的啊。
2.谈下我对你程序的意见,首先就是你的那个类成员变量的控制权限都太大了,都是public,不符合封装的设计思路。
其次,对一般的计算器来说,你的布局管理器选择有问题,第一,一个好的布局是布局管理器的综合使用;第二,我的建议是首先使用一个上下布局,上面放一个panel,用于放那个输入数字的文本框;下面放一个panel,布局管理器可以使用GridLayout,你可以去查查API。每一个网格(Grid)总再放一个button,用于放那些按键,就呈现出了计算器的效果了,哈哈,你可以试试,至于监听器的逻辑,你现在的依然可以使用。
2010-02-24 22:58
心无旁骛
Rank: 1
等 级:新手上路
帖 子:11
专家分:3
注 册:2010-2-8
收藏
得分:0 
回复 3楼 baifenghan
非常感谢这位大哥的耐心讲解。
        
2010-02-27 17:32
pywepe
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:296
专家分:483
注 册:2009-4-5
收藏
得分:0 
慢慢来嘛 不急

java群
62635216
欢迎加入
2010-03-01 22:11
快速回复:[求助]杯具中的洗具。 俺内个计算器终于出炉了。请大家前来指点。小弟 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015271 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved