net beans中java语言实现计算器功能

来源:互联网 发布:程序员必备电子产品 编辑:程序博客网 时间:2024/06/07 03:23

importjava.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.DecimalFormat;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculator {
   
//
计算器面板
        
private JFrame f = newJFrame("Calculator");
         //输入面扳
        
private JPanel inputPanel = newJPanel();
         //加减乘除面板
        
private JPanel operationPanel =new JPanel();
         //数字面板
        
private JPanel buttonsPanel = newJPanel();
        
         //输入数据文本框
        
private JTextField input = newJTextField(20);
        
         //退格键
        
private JButton backspace = new JButton("BackSpace");
        
//清空
        
private JButtonCE = new JButton("CE ");
         //删除
        
private JButton C = newJButton("C  ");
        
         //四则运算符号键
        
private JButton add = newJButton("+");
         private JButton sub = newJButton("-");
         private JButton mul = newJButton("*");
         private JButton div = newJButton("/");
        
         //小数点
        
private JButton decimal = new JButton(".");
         //等号
        
private JButton equal = newJButton("=");
        
         //数字键
        
private JButton zero = newJButton("0");
         private JButton one = newJButton("1");
         private JButton two = newJButton("2");
         private JButton three = newJButton("3");
         private JButton four = newJButton("4");
         private JButton five = newJButton("5");
         private JButton six = newJButton("6");
         private JButton seven = newJButton("7");
         private JButton eight = newJButton("8");
         private JButton nine = newJButton("9");
        
         private String num1 ="";//保存第一个运算数字
        
private String operator ="";//保存运算符号
        

         public static void main(String[]args) {
                   new Calculator();//new计算器实例
        
}
        
         public Calculator(){
              //添加组件,布局
                  
inputPanel.add(input);
                   f.add(inputPanel,BorderLayout.NORTH);
                  
                   operationPanel.add(backspace);
                   operationPanel.add(CE);
                   operationPanel.add(C);
                   f.add(operationPanel,BorderLayout.CENTER);
                  
                   buttonsPanel.add(add);
                   buttonsPanel.add(sub);
                   buttonsPanel.add(mul);
                   buttonsPanel.add(div);
                   buttonsPanel.add(one);
                   buttonsPanel.add(two);
                   buttonsPanel.add(three);
                   buttonsPanel.add(zero);
                   buttonsPanel.add(four);
                   buttonsPanel.add(five);
                   buttonsPanel.add(six);
                   buttonsPanel.add(decimal);
                   buttonsPanel.add(seven);
                   buttonsPanel.add(eight);
                   buttonsPanel.add(nine);
                   buttonsPanel.add(equal);
                   buttonsPanel.setLayout(newGridLayout(4, 4));
                   f.add(buttonsPanel,BorderLayout.SOUTH);
                  
                   //注册各个组件监听事件
                  
backspace.addMouseListener(newOperationMouseListener());
                   CE.addMouseListener(newOperationMouseListener());
                   C.addMouseListener(newOperationMouseListener());
                   decimal.addMouseListener(newOperationMouseListener());
                   equal.addMouseListener(newOperationMouseListener());
                  
                   //注册四则运算监听
                  
add.addMouseListener(newCalcMouseListener());
                   sub.addMouseListener(newCalcMouseListener());
                   mul.addMouseListener(newCalcMouseListener());
                   div.addMouseListener(newCalcMouseListener());
                  
                   //注册数字监听事件
                  
zero.addMouseListener(newNumberMouseListener());
                   one.addMouseListener(newNumberMouseListener());
                   two.addMouseListener(newNumberMouseListener());
                   three.addMouseListener(newNumberMouseListener());
                   four.addMouseListener(newNumberMouseListener());
                   five.addMouseListener(newNumberMouseListener());
                   six.addMouseListener(newNumberMouseListener());
                   seven.addMouseListener(newNumberMouseListener());
                   eight.addMouseListener(newNumberMouseListener());
                   nine.addMouseListener(newNumberMouseListener());
                  
                   f.setVisible(true);
                   f.pack();
                   f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         }
        
         private class NumberMouseListenerimplements MouseListener{

                   public voidmouseClicked(MouseEvent e) {
                            if(input.getText().trim().equals("0")){//如果文本框已经是0,结果还是0
                                    
input.setText(((JButton)e.getSource()).getText().trim());
                            }else{//
否则的话,把0添加到后面,譬如文本框是1,结果就为10
                                    
input.setText(input.getText().concat(((JButton)e.getSource()).getText().trim()));
                            }
                   }

                   public voidmouseEntered(MouseEvent e) {}
                   public voidmouseExited(MouseEvent e) {}
                   public voidmousePressed(MouseEvent e) {}
                   public void mouseReleased(MouseEvente) {}        
         }
        
         private class CalcMouseListenerimplements MouseListener{
                   //
如果输入的是运算符号,保存第一个结果和运算符号
                  
public voidmouseClicked(MouseEvent e) {
                            num1 =input.getText().trim();input.setText("");
                            operator =((JButton)e.getSource()).getText().trim();
                   }

                   public voidmouseEntered(MouseEvent e) {}
                   public voidmouseExited(MouseEvent e) {}
                   public voidmousePressed(MouseEvent e) {}
                   public voidmouseReleased(MouseEvent e) {}        
         }
        
         private classOperationMouseListener implements MouseListener{

                   public voidmouseClicked(MouseEvent e) {
                            if(e.getSource()== backspace){//退格键,删除一个直到没有字符删除
                                    
StringinputText = input.getText();
                                     if(inputText.length()> 0){
                                               input.setText(inputText.substring(0,inputText.length() - 1));
                                     }
                            }else if(e.getSource() == C){
                                     input.setText("0");//C,清空所有运算数字和符号
                                    
num1= "";
                            }elseif(e.getSource() == CE){
                                     input.setText("0");//CE-->将文本框置为0
                           
}elseif(e.getSource() == decimal){
                                     Stringtext = input.getText().trim();
                                     //
如果按了小数点,如果文本框已经有小数点,不做任何操作,否则在结果后面加上小数点
                                    
if(text.indexOf(".")== -1){
                                               input.setText(text.concat("."));
                                     }
                            }elseif(e.getSource() == equal){
                                     //如果是等号
                                    
if(!operator.trim().equals("")){
                                               if(!input.getText().trim().equals("")){
                                                        doubleresult = 0D;
                                                        if(operator.equals("+")){//执行加法运算
                                                                
result= Double.parseDouble(num1) + Double.parseDouble(input.getText().trim());
                                                        }elseif(operator.equals("-")){//减法运算
                                                                
result= Double.parseDouble(num1) - Double.parseDouble(input.getText().trim());
                                                        }elseif(operator.equals("*")){//乘法运算
                                                                
result= Double.parseDouble(num1) * Double.parseDouble(input.getText().trim());
                                                        }elseif(operator.equals("/")){//除法运算
                                                                
result= Double.parseDouble(num1) / Double.parseDouble(input.getText().trim());
                                                        }
                                                         
                                                         //格式化最终结果,保留两位小数点
                                                       
input.setText(newDecimalFormat("0.00").format(result));
                                               }
                                     }
                                    
                            }
                           
                   }

                   public voidmouseEntered(MouseEvent e) {}
                   public voidmouseExited(MouseEvent e) {}
                   public void mousePressed(MouseEvente) {}
                   public voidmouseReleased(MouseEvent e) {}        
         }
        
}

 

0 0