使用ExtDesigner 设计简单计算器


一,   设计思想。

计算器的设计主要功能是使用,做出来的计算器要能简单的计算加减乘除法的运算,清除复位功能。分析计算器用ExtDesigner设计需要用到哪些控件及布局情况,还有需要用到多少个控件等一些情况。


二,   设计步骤。

1.打开ExtDesigner软件,新建一个project工程。界面如下:

2.计算器的窗口不需要全屏显示,所以不需要vewport控件,如图:

 计算器只需要一个window控件就可以显示,这样做可以做到美观。Window控件如图:

3.把window控件拖到设计界面,设置window的id属性为window,属性layout为absolute。Title属性为计算器。设置如图:

 

到此步骤先保存一下工程。

4.把需要用到的控件一次拖到window界面上去。计算器用到的控件有16个Button按钮,一个textField文本框。如图:

.一次拖16个Button到window上,调整各个按钮之间的距离。把TextField拖到window上,调整大小。然后,修改Button的id属性和title属性。修改结果如图:

 

到此步骤,计算器界面化已经设计好了,然后再次保存工程文件。

5.保存好工程文后,单击按钮,导出工程,这样就可以去编程了。


三,   设计代码。

  1. 到保存文件位置用十六进制编辑器打开扩展名为.js的文件。打开如图:

  2.接下来写代码,先挂载各个控件代码如下:

        Ext.getCmp("btn1").on('click',this.on_btn1Click,this);

       Ext.getCmp("btn2").on('click',this.on_btn2Click,this);

        Ext.getCmp("btn3").on('click',this.on_btn3Click,this);

       Ext.getCmp("btn4").on('click',this.on_btn4Click,this);

       Ext.getCmp("btn5").on('click',this.on_btn5Click,this);

       Ext.getCmp("btn6").on('click',this.on_btn6Click,this);

        Ext.getCmp("btn7").on('click',this.on_btn7Click,this);

       Ext.getCmp("btn8").on('click',this.on_btn8Click,this);

       Ext.getCmp("btn9").on('click',this.on_btn9Click,this);

       Ext.getCmp("btn0").on('click',this.on_btn0Click,this);

       Ext.getCmp("btnADD").on('click',this.on_btnADDClick,this);

       Ext.getCmp("btnE").on('click',this.on_btnEClick,this);

       Ext.getCmp("btnSUB").on('click',this.on_btnSUBClick,this);

       Ext.getCmp("btnMUL").on('click',this.on_btnMULClick,this);

        Ext.getCmp("btnDIV").on('click',this.on_btnDIVClick,this);

       Ext.getCmp("btnC").on('click',this.on_btnCClick,this);

  3. 编写各个按键的Click事件函数,按键的Click代码如下:

    on_btn1Click:function(obj,e){    

              var tmp=Ext.getCmp('txtJG').getValue();

              tmp=tmp+'1';

              Ext.getCmp('txtJG').setValue(tmp);  

        }

先申明一个变量tmp,获取txtJG对象的值,便赋值给tmp。然后设置Button1的Click事件,使单击btn1,1这个值就被送到txtJG文本框里面去了。其他按键同样如此做法。

4.最后实现加减乘除用到一个switch语句,语法代码下:

switch(falg)

  {

 case'+':Ext.getCmp('txtJG').setValue(Number(tmp)+Number(g_a));break;

 case'-':Ext.getCmp('txtJG').setValue(Number(g_a)-Number(tmp));break;

 case'*':Ext.getCmp('txtJG').setValue(Number(g_a)*Number(tmp));break;

 case'/':Ext.getCmp('txtJG').setValue(Number(g_a)/Number(tmp));break;

   }

       flag='';

先要申明一个全局变量flag,让flag的值是运算符。

四,   设计结果。

  设计结果就是一个简单的计算器。如图:

 


五,   设计中遇到的问题。

1.     没有注意到全局变量与局部变量的使用,在保存数据时出了问题。要保存的数据在其他地方要用到时必须定义一个全局变量来存放。

2.     在写全局变量flag时,声明与下面用到的flag不一致,导致运行不出来。这是语法错误,在写代码时候要特别注意这样的小毛病。不能把声明的变量写错。

3.     在整个编程过程中,如果遇到没有结果时侯。随时用alert()来查错误。