java计算器界面布局_Java实现计算器的编译

2022-08-06 07:55:43


界面设计:

一:框架

 本计算器是基于Swing组建的图形用户界面,采用JFrame框架作为主窗口

public class Calculator extends JFrameimplements ActionListener

类名Calculator(计算器),继承JFrame框架,实现事件监听器接口

二:文本行,按钮

整个计算器界面,可以随意发挥,我编写的界面最终的样子在文章开头有图片

6c0b6e7220b59946974ebb939daacd9e.png

计算器类中,定义的成员有:

①private String[]KEYS={"7","8","9","*","4","5","6","-","1","2","3","+","0","e","π","÷","c","%",".","=","(",")","sqr","x*x"};    ②private JButton keys[]=new JButton[KEYS.length];   ③private JTextField resultText = new JTextField("0.0");   ④private String b="";

①:按钮标签字符串

②:定义按钮数组

③:定义文本行

④:用于存放计算式

构造方法代码段如下(计算器的整体界面完成)

public Calculator()    {       super("计算器");       this.setLayout(null);//未采用任何类型的布局,后面的文本框和按钮显示位置都是自己计算好的位置       resultText.setBounds(20, 5, 255, 40);//设置文本框大小       resultText.setHorizontalAlignment(JTextField.RIGHT);//文本框内容右对齐       resultText.setEditable(false);//文本框不允许修改结果       this.add(resultText);//新建文本框       int x=20,y=55;       for (int i=0;i//放置按钮       {           keys[i] = new JButton();           keys[i].setText(KEYS[i]);           keys[i].setBounds(x, y, 60, 40);       if(x<215)           {                x+=65;           }       else           {                x = 20;                y+=45;           }            this.add(keys[i]);       }       for (int i = 0; i //每个按钮都注册事件监听器       {           keys[i].addActionListener(this);       }       this.setResizable(false);       this.setBounds(500, 200, 300, 400);       this.setDefaultCloseOperation(EXIT_ON_CLOSE);       this.setVisible(true);    }

事件处理(以下代码用同一个字符串来记录计算式和结果,保证了计算式可以连续计算):

public void actionPerformed(ActionEvente)//处理事件    {       String label = e.getActionCommand(); //获得事件源的标签       if (label=="c"||label=="=")//按钮C清空文本框,消除前面所有的输入和结果       {           if(label=="=")//按钮=得出最终结果,调用计算方法           {                String s[]=yunsuan(this.b);                String result=Result(s);                this.b=result+"";                resultText.setText(this.b);//更新文本框,当前结果在字符串b中,并未删除,下一次输入是接着这个结果的,这样可以实现连续运算           }           else           {                this.b="";               resultText.setText("0");//更新文本域的显示,显示初始值           }       }       else if (label=="sqr")//sqr 按钮计算开方       {           String n=yunsuan2(this.b);           resultText.setText(n);           this.b=n;       }       else if(label=="x*x")//x*x按钮实现某个数的平方       {           String m=yunsuan3(this.b);           resultText.setText(m);           this.b=m;       }       else if(label=="e"||label=="π")       {           if (label=="e")//常数e           {                Stringm=String.valueOf(2.71828);                this.b=this.b+m;                resultText.setText(this.b);           }           if (label=="π")//常数π           {                Stringm=String.valueOf(3.14159265);                this.b=this.b+m;                resultText.setText(this.b);           }       }       else        {           this.b=this.b+label;           resultText.setText(this.b);       }    }


           高品质全面课程升级,2020最新SVIP豪华版


  • 作者:西江月 xiyue手绘
  • 原文链接:https://blog.csdn.net/weixin_32161697/article/details/112083356
    更新时间:2022-08-06 07:55:43