第一个小应用———Java计算器

来源:互联网 发布:精品电玩手游刷分软件 编辑:程序博客网 时间:2024/05/22 15:10
/***第一步:建立计算器的界面*第二步:创建按钮监听:分成数字按钮监听和运算符监听*第三步:创建calculator类,进行数字运算*/public class Calculator extends JFrame{    private JPanel Panel;    private JTextField textField;    private String lastCommand;    private double result;    private boolean start;    public static void main(String[] args) {        Calculator frame = new Calculator();        frame.setTitle("第一台计算器");        frame.setSize(220,230);        frame.setResizable(false);        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);        frame.setVisible(true);    }    public Calculator() {        result = 0;        lastCommand = "=";        start = true;        // TODO Auto-generated constructor stu        setLayout(new BorderLayout());          textField = new JTextField("请输入数字计算");//初始化文本框        textField.setSize(20,20);        textField.setEnabled(false);//setEnabled(false)是使你的textField处于不可更改状态,值为true的时候是可更改的(也是默认的)        add(textField,BorderLayout.NORTH);        Panel = new JPanel();        Panel.setLayout(new GridLayout(4, 4));        InsertAction insert = new InsertAction();//初始化数字监听事件        CommandAction command = new CommandAction();//初始化运算符监听事件        addButton("7",insert);//进入数字按钮的监听事件        addButton("8",insert);        addButton("9",insert);        addButton("/",command);//进入运算符按钮的监听事件        addButton("4",insert);        addButton("5",insert);        addButton("6",insert);        addButton("*",command);        addButton("1",insert);        addButton("2",insert);        addButton("3",insert);        addButton("-",command);        addButton("0",insert);        addButton(".",insert);        addButton("=",command);        addButton("+",command);        add(Panel, BorderLayout.CENTER);    }    private void addButton(String lable ,ActionListener actionListener){        JButton button = new JButton(lable);        button.addActionListener(actionListener);        Panel.add(button);    }    private class InsertAction implements ActionListener{        @Override        public void actionPerformed(ActionEvent e) {            // TODO Auto-generated method stub            String input = e.getActionCommand();//e.getActionCommand()方法返回String,通过这个String判断是哪个按钮触发了事件            if(start){                textField.setText("");                start = false;            }            textField.setText(textField.getText()+input);        }    }     private class CommandAction implements ActionListener{        @Override        public void actionPerformed(ActionEvent e) {            // TODO Auto-generated method stub            String command = e.getActionCommand();            if(start){                if(command.equals("*")){                    textField.setText(command);                    start = false;                }else{                    lastCommand = command;                }            }            else{                calculator(Double.parseDouble(textField.getText()));                lastCommand = command;                start = true;            }        }    }    //运算并输出结果    public void calculator(double x) {        if(lastCommand.equals("+"))result+=x;        else if(lastCommand.equals("-"))result-=x;        else if(lastCommand.equals("*"))result*=x;        else if(lastCommand.equals("/"))result/=x;        else if(lastCommand.equals("="))result=x;        textField.setText(""+result);    }}
原创粉丝点击