我的swt计算器

 

import org.eclipse.swt.*;

import java.lang.*;

import org.eclipse.swt.events.*;

import org.eclipse.swt.custom.*;

import org.eclipse.swt.graphics.*;

import org.eclipse.swt.widgets.*;

import org.eclipse.swt.layout.*;

public class calculator {

Display d;

Shell s;

String num="0";

double result=0,temp=0;

int op=0,pan=1,dotpan=0;

calculator() {

Display d=new Display();

Shell s= new Shell(d);

s.setText("陈实的计算器"); 

s.setSize(400,500);

final Text text1 = new Text(s,SWT.SINGLE|SWT.BORDER);

text1.setBounds(15,15,360,40);

text1.setEditable(false);

// text1.setBackground(white);

text1.setText(num);

s.open();

//0

final Button b0 = new Button(s,SWT.PUSH);

b0.setBounds(20,400,70,50);

b0.setText("0");

b0.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==0)

            {

            text1.setText(num="0");

            pan=1;

            }

            else

            {

            if(Double.parseDouble(text1.getText())!=0||dotpan==1)

            text1.setText(text1.getText()+0);            

            }

            num=text1.getText();

           

           }

});

//1

final Button b1 = new Button(s,SWT.PUSH);

b1.setBounds(20,340,70,50);

b1.setText("1");

b1.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==0)

            {

            num="";

            text1.setText(num+1);

            pan=1;

            }

            else

            {

            if(Double.parseDouble(text1.getText())==0&&dotpan!=1)

            {

            text1.setText(num="");

            text1.setText(text1.getText()+1);

            }

            else

            text1.setText(text1.getText()+1);

            }

            num=text1.getText();

           }

});

//2

final Button b2 = new Button(s,SWT.PUSH);

b2.setBounds(100,340,70,50);

b2.setText("2");

b2.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==0)

            {

            num="";

            text1.setText(num+2);

            pan=1;

            }

            else

            {

            if(Double.parseDouble(text1.getText())==0&&dotpan!=1)

            {

            text1.setText(num="");

            text1.setText(text1.getText()+2);

            }

            else

            text1.setText(text1.getText()+2);

            }

            num=text1.getText();

           }

});

//3

final Button b3 = new Button(s,SWT.PUSH);

b3.setBounds(180,340,70,50);

b3.setText("3");

b3.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==0)

            {

            num="";

            text1.setText(num+3);

            pan=1;

            }

            else

            {

            if(Double.parseDouble(text1.getText())==0&&dotpan!=1)

            {

            text1.setText(num="");

            text1.setText(text1.getText()+3);

            }

            else

            text1.setText(text1.getText()+3);

            }

            num=text1.getText();

           }

});

//4

final Button b4 = new Button(s,SWT.PUSH);

b4.setBounds(20,280,70,50);

b4.setText("4");

b4.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==0)

            {

            num="";

            text1.setText(num+4);

            pan=1;

            }

            else

            {

            if(Double.parseDouble(text1.getText())==0&&dotpan!=1)

            {

            text1.setText(num="");

            text1.setText(text1.getText()+4);

            }

            else

            text1.setText(text1.getText()+4);

            }

            num=text1.getText();

           }

});

//5

final Button b5 = new Button(s,SWT.PUSH);

b5.setBounds(100,280,70,50);

b5.setText("5");

b5.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==0)

            {

            num="";

            text1.setText(num+5);

            pan=1;

            }

            else

            {

            if(Double.parseDouble(text1.getText())==0&&dotpan!=1)

            {

            text1.setText(num="");

            text1.setText(text1.getText()+5);

            }

            else

            text1.setText(text1.getText()+5);

            }

            num=text1.getText();

           }

});

//6

final Button b6 = new Button(s,SWT.PUSH);

b6.setBounds(180,280,70,50);

b6.setText("6");

b6.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==0)

            {

            num="";

            text1.setText(num+6);

            pan=1;

            }

            else

            {

            if(Double.parseDouble(text1.getText())==0&&dotpan!=1)

            {

            text1.setText(num="");

            text1.setText(text1.getText()+6);

            }

            else

            text1.setText(text1.getText()+6);

            }

            num=text1.getText();

           }

});

//7

final Button b7 = new Button(s,SWT.PUSH);

b7.setBounds(20,220,70,50);

b7.setText("7");

b7.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==0)

            {

            num="";

            text1.setText(num+7);

            pan=1;

            }

            else

            {

            if(Double.parseDouble(text1.getText())==0&&dotpan!=1)

            {

            text1.setText(num="");

            text1.setText(text1.getText()+7);

            }

            else

            text1.setText(text1.getText()+7);

            }

            num=text1.getText();

           }

});

//8

final Button b8 = new Button(s,SWT.PUSH);

b8.setBounds(100,220,70,50);

b8.setText("8");

b8.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==0)

            {

            num="";

            text1.setText(num+8);

            pan=1;

            }

            else

            {

            if(Double.parseDouble(text1.getText())==0&&dotpan!=1)

            {

            text1.setText(num="");

            text1.setText(text1.getText()+8);

            }

            else

            text1.setText(text1.getText()+8);

            }

            num=text1.getText();

           }

});

//9

final Button b9 = new Button(s,SWT.PUSH);

b9.setBounds(180,220,70,50);

b9.setText("9");

b9.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==0)

            {

            num="";

            text1.setText(num+9);

            pan=1;

            }

            else

            {

            if(Double.parseDouble(text1.getText())==0&&dotpan!=1)

            {

            text1.setText(num="");

            text1.setText(text1.getText()+9);

            }

            else

            text1.setText(text1.getText()+9);

            }

            num=text1.getText();

           }

});

//dot

final Button b10 = new Button(s,SWT.PUSH);

b10.setBounds(100,400,70,50);

b10.setText(".");

b10.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(dotpan==0)

            {

            if(pan==0)

            {

            text1.setText(num="0.");

            pan=1;

            }

            else

            {

            if(Double.parseDouble(text1.getText())==0)

            {

            text1.setText(num="0.");

            }

            else

            text1.setText(text1.getText()+".");

            }

            num=text1.getText();

            dotpan=1;

            }

           }

});

//+

final Button badd = new Button(s,SWT.PUSH);

badd.setBounds(260,340,70,50);

badd.setText("+");

badd.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==1&&result==0)

            {

            result=Double.parseDouble(num);

            op=1;

            dotpan=0;

            pan=0;

            }

            else if(result!=0&&pan==1)

            {

            temp=Double.parseDouble(num);

            result=result+temp;

            text1.setText(num=String.valueOf(result));

            temp=0;

            pan=0;

            }

            else if(pan==0)

            {

            result=Double.parseDouble(num);

            temp=0;

            dotpan=0;

            op=1;

            }

           }

});

//-

final Button bmin = new Button(s,SWT.PUSH);

bmin.setBounds(260,400,70,50);

bmin.setText("-");

bmin.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==1&&result==0)

            {

            result=Double.parseDouble(num);

            op=2;

            dotpan=0;

            pan=0;

            }

            else if(result!=0&&pan==1)

            {

            temp=Double.parseDouble(num);

            result=result-temp;

            text1.setText(num=String.valueOf(result));

            temp=0;

            dotpan=0;

            pan=0;

            }

            else if(pan==0)

            {

            result=Double.parseDouble(num);

            temp=0;

            dotpan=0;

            op=2;

            }

           }

});

//*

final Button bmul = new Button(s,SWT.PUSH);

bmul.setBounds(260,280,70,50);

bmul.setText("*");

bmul.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==1&&result==0)

            {

            result=Double.parseDouble(num);

            op=3;

            dotpan=0;

            pan=0;

            }

            else if(result!=0&&pan==1)

            {

            temp=Double.parseDouble(num);

            result=result*temp;

            text1.setText(num=String.valueOf(result));

            temp=0;

            dotpan=0;

            pan=0;

            }

            else if(pan==0)

            {

            result=Double.parseDouble(num);

            temp=0;

            dotpan=0;

            op=3;

            }

           }

});

///

final Button bdiv = new Button(s,SWT.PUSH);

bdiv.setBounds(260,220,70,50);

bdiv.setText("/");

bdiv.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(pan==1&&result==0)

            {

            result=Double.parseDouble(num);

            op=4;

            dotpan=0;

            pan=0;

            }

            else if(result!=0&&pan==1)

            {

            temp=Double.parseDouble(num);

            if(temp!=0)

            {

            result=result/temp;

            text1.setText(num=String.valueOf(result));

            temp=0;

            dotpan=0;

            pan=0;

            }

            }

            else if(pan==0)

            {

            result=Double.parseDouble(num);

            temp=0;

            dotpan=0;

            op=4;

            }

           }

});

//=

final Button bequal = new Button(s,SWT.PUSH);

bequal.setBounds(180,400,70,50);

bequal.setText("=");

bequal.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            if(op==1)

            {

            temp=Double.parseDouble(num);

            result=result+temp;

            temp=0;

            op=0;

            num=String.valueOf(result);

            text1.setText(num);

            }

            if(op==2)

            {

            temp=Double.parseDouble(num);

            result=result-temp;

            temp=0;

            op=0;

            text1.setText(num=String.valueOf(result));

            }

            if(op==3)

            {

            temp=Double.parseDouble(num);

            result=result*temp;

            temp=0;

            op=0;

            text1.setText(num=String.valueOf(result));

            }

            if(op==4)

            {

            temp=Double.parseDouble(num);

            if(temp!=0)

            {

            result=result/temp;

              temp=0;

              op=0;

              text1.setText(num=String.valueOf(result));

            }

            }

            pan=0;

           }

});

//C

final Button bcl = new Button(s,SWT.PUSH);

bcl.setBounds(260,160,70,50);

bcl.setText("C");

bcl.addSelectionListener(new SelectionAdapter(){

           public void widgetSelected(SelectionEvent e){

            result=0;

            pan=1;

            temp=0;

            op=0;

            dotpan=0;

            text1.setText(num="0");

           }

});

           

           

while(!s.isDisposed()){

if(!d.readAndDispatch())

d.sleep();

}

d.dispose();

}

public static void main(String[] args){

calculator ss= new calculator();

}

}

 

 

 

 

很抱歉这么长时间才交上来,一直没有什么时间做,而且没有比较好的SWT学习资料,感谢俞诗尧的书,让我一晚上加上一个上午就可以搞定这个任务。

功能实现的话连续运算可以实现也可以按下等号之后继续算,到目前为止这方面都还没有出现bug(当然我的测试时间比较匆忙就是了)。

不足:

1)布局不怎么好看,因为时间太赶所以只管实现功能的事情,连背景颜色都没有改成白色,囧java的color类让我无奈,所以界面不怎么好看。

2)再就是目前已知的一个bug就是在进行连续运算的时候选择运算操作后不能改变注意,就是如果你点击了+键,你就不能改变主意做其他的运算了,就算你点击了其他运算,得出的结果依旧是+得出的结果……

3)我答应浩哥的M+,M-,MC,MR没做,时间实在太紧了抱歉啊,以后有时间我会补起来的~

4)强烈要求大家来找bug……分析一下原因

 

虽然界面不好看,还是附张图吧……额……,谁能教我怎么贴图?…………算了,群邮件里面看吧。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值