java计算器视频教程

2025-11-10 11:33:09

1、首先构建虚拟键盘,以及排版,使用JFrame创建窗口,

    Button button0=new Button("0");

    Button button1=new Button("1");

    Button button2=new Button("2");

    Button button3=new Button("3");

    Button button4=new Button("4");

    Button button5=new Button("5");

    Button button6=new Button("6");

    Button button7=new Button("7");

    Button button8=new Button("8");

    Button button9=new Button("9");

    Button button10=new Button(".");

    Button button11=new Button("/");

    Button button12=new Button("*");

    Button button13=new Button("+");

    Button button14=new Button("-");

    Button button15=new Button("=");

    Button button16=new Button("Clear");

当然可以使用循环语句创建

Button[] b=new Button[17]

String[] s={'1','2',...,'Clear'}

for(int i=0;i<b.length;i++){

    b[i].setLabel(s[i])

}

2、创建文本域,构建容器:

    JTextField TextFeild1=new JTextField();    

    JPanel panel1=new JPanel(new GridLayout(4,4,4,4));

    JPanel panel2=new JPanel(new GridLayout(1,2,4,4));

3、对容器添加组件

        panel1.add(button1);panel1.add(button2);panel1.add(button3);panel1.add(button11);

        panel1.add(button4);panel1.add(button5); panel1.add(button6);panel1.add(button12);

        panel1.add(button7);panel1.add(button8);panel1.add(button9);panel1.add(button14);

        panel1.add(button0);panel1.add(button10); panel1.add(button13);panel1.add(button15); 

        

        panel2.add(TextFeild1);panel2.add(button16);

当然也可以使用循环语句

4、注册监听器:       

        button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);

        button4.addActionListener(this);button5.addActionListener(this);button6.addActionListener(this);

        button7.addActionListener(this);button8.addActionListener(this);button9.addActionListener(this);

        button10.addActionListener(this);button11.addActionListener(this);button12.addActionListener(this);

        button13.addActionListener(this);button14.addActionListener(this);button15.addActionListener(this);

        button16.addActionListener(this);button0.addActionListener(this);

5、实现命令及运算:

        String label=e.getActionCommand();

        switch(label){

                case "1":TextFeild1.setText(TextFeild1.getText()+"1");state=true;break;

                case "2":TextFeild1.setText(TextFeild1.getText()+"2");state=true;break;

                case "3":TextFeild1.setText(TextFeild1.getText()+"3");state=true;break;

                case "4":TextFeild1.setText(TextFeild1.getText()+"4");state=true;break;

                case "5":TextFeild1.setText(TextFeild1.getText()+"5");state=true;break;

                case "6":TextFeild1.setText(TextFeild1.getText()+"6");state=true;break;

                case "7":TextFeild1.setText(TextFeild1.getText()+"7");state=true;break;

                case "8":TextFeild1.setText(TextFeild1.getText()+"8");state=true;break;

                case "9":TextFeild1.setText(TextFeild1.getText()+"9");state=true;break;

                case ".":TextFeild1.setText(TextFeild1.getText()+".");state=true;break;

                case "0":TextFeild1.setText(TextFeild1.getText()+"0");state=true;break;

                default:break;

            }

        if("+".equals(label)){

            result+=Double.valueOf(TextFeild1.getText());

            System.out.println(result);

            TextFeild1.setText("");

            operation=label;

            state=false;

        }else if("-".equals(label)){

            result-=Double.valueOf(TextFeild1.getText());

            TextFeild1.setText("");

            operation=label;

            state=false;

        }else if("=".equals(label)){

            switch(operation){

                case "+":result+=Double.valueOf(TextFeild1.getText());break;

                case "-":result-=Double.valueOf(TextFeild1.getText());break;

                case "/":result/=Double.valueOf(TextFeild1.getText());break;

                case "*":result*=Double.valueOf(TextFeild1.getText());break;       

            }

            TextFeild1.setText(String.valueOf(result));

        }else if("/".equals(label)){

            result=1;

            result=Double.valueOf(TextFeild1.getText())/result;

            TextFeild1.setText("");

            operation=label;

        }else if("*".equals(label)){

            result=1;

            result*=Double.valueOf(TextFeild1.getText());

            TextFeild1.setText("");

            operation=label;

        }else if("Clear".equals(label)){

            TextFeild1.setText("");

            result=0.0;

            operation="";

        }

思路是:每一次点击数字按钮显示点击数字,保存数字。点击运算符,保存运算指令,点击下一数字,执行运算。

6、演示:

1/3=0.333333333

java计算器视频教程

7、汇总代码:

import java.awt.BorderLayout;

import java.awt.Button;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JFrame;

import static javax.swing.JFrame.EXIT_ON_CLOSE;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class Calculater extends JFrame implements ActionListener{

    String title="Calculator@(^-^)@";

    Button button0=new Button("0");

    Button button1=new Button("1");

    Button button2=new Button("2");

    Button button3=new Button("3");

    Button button4=new Button("4");

    Button button5=new Button("5");

    Button button6=new Button("6");

    Button button7=new Button("7");

    Button button8=new Button("8");

    Button button9=new Button("9");

    Button button10=new Button(".");

    Button button11=new Button("/");

    Button button12=new Button("*");

    Button button13=new Button("+");

    Button button14=new Button("-");

    Button button15=new Button("=");

    Button button16=new Button("Clear");

    boolean state=false;

    static double result=0.0;

    String operation;

    JTextField TextFeild1=new JTextField();

    

    JPanel panel1=new JPanel(new GridLayout(4,4,4,4));

    JPanel panel2=new JPanel(new GridLayout(1,2,4,4));

    

    JLabel label1=new JLabel("Copyright ©2015-2016 Easom, All Rights Reserved");

    public Calculater(){

        super();     

        this.setTitle(title);

        this.setVisible(true);

        this.setLocationRelativeTo(null);

        this.setSize(500,200);

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);

        this.setLayout(new BorderLayout()); 

        

        panel1.add(button1);panel1.add(button2);panel1.add(button3);panel1.add(button11);

        panel1.add(button4);panel1.add(button5); panel1.add(button6);panel1.add(button12);

        panel1.add(button7);panel1.add(button8);panel1.add(button9);panel1.add(button14);

        panel1.add(button0);panel1.add(button10); panel1.add(button13);panel1.add(button15); 

        

        panel2.add(TextFeild1);panel2.add(button16);

        

        button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);

        button4.addActionListener(this);button5.addActionListener(this);button6.addActionListener(this);

        button7.addActionListener(this);button8.addActionListener(this);button9.addActionListener(this);

        button10.addActionListener(this);button11.addActionListener(this);button12.addActionListener(this);

        button13.addActionListener(this);button14.addActionListener(this);button15.addActionListener(this);

        button16.addActionListener(this);button0.addActionListener(this);

        

        this.add(panel2,BorderLayout.NORTH);

        this.add(panel1,BorderLayout.CENTER);

        this.add(label1,BorderLayout.SOUTH);

    }

    @Override

    public void actionPerformed(ActionEvent e) {

        

        

        String label=e.getActionCommand();

        switch(label){

                case "1":TextFeild1.setText(TextFeild1.getText()+"1");state=true;break;

                case "2":TextFeild1.setText(TextFeild1.getText()+"2");state=true;break;

                case "3":TextFeild1.setText(TextFeild1.getText()+"3");state=true;break;

                case "4":TextFeild1.setText(TextFeild1.getText()+"4");state=true;break;

                case "5":TextFeild1.setText(TextFeild1.getText()+"5");state=true;break;

                case "6":TextFeild1.setText(TextFeild1.getText()+"6");state=true;break;

                case "7":TextFeild1.setText(TextFeild1.getText()+"7");state=true;break;

                case "8":TextFeild1.setText(TextFeild1.getText()+"8");state=true;break;

                case "9":TextFeild1.setText(TextFeild1.getText()+"9");state=true;break;

                case ".":TextFeild1.setText(TextFeild1.getText()+".");state=true;break;

                case "0":TextFeild1.setText(TextFeild1.getText()+"0");state=true;break;

                default:break;

            }

        if("+".equals(label)){

            result+=Double.valueOf(TextFeild1.getText());

            System.out.println(result);

            TextFeild1.setText("");

            operation=label;

            state=false;

        }else if("-".equals(label)){

            result-=Double.valueOf(TextFeild1.getText());

            TextFeild1.setText("");

            operation=label;

            state=false;

        }else if("=".equals(label)){

            switch(operation){

                case "+":result+=Double.valueOf(TextFeild1.getText());break;

                case "-":result-=Double.valueOf(TextFeild1.getText());break;

                case "/":result/=Double.valueOf(TextFeild1.getText());break;

                case "*":result*=Double.valueOf(TextFeild1.getText());break;       

            }

            TextFeild1.setText(String.valueOf(result));

        }else if("/".equals(label)){

            result=1;

            result=Double.valueOf(TextFeild1.getText())/result;

            TextFeild1.setText("");

            operation=label;

        }else if("*".equals(label)){

            result=1;

            result*=Double.valueOf(TextFeild1.getText());

            TextFeild1.setText("");

            operation=label;

        }else if("Clear".equals(label)){

            TextFeild1.setText("");

            result=0.0;

            operation="";

        }

    }

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢