用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

Java计算器

2013-08-26 作者: 流风清音举报

[java]代码库

/**
 * Java计算器
 *
 * @author LiuFengQingYin
 */

/**
 * 功能键:
 * MC键:清除存储器中数据
 * CE键:清除当前显示的数据
 * C键:清除所有数据
 * C键:清除所有数据
 * MR键:将存于存储器中的数据显示出来
 * MC键:清除存储器中数据
 * MS键:将显示的数据存储在存储器中
 * M+键:将显示的数据与存储器中的数据相加并进行存储
 * sqrt:开平方
 */

import javax.swing.text.AttributeSet;  
import javax.swing.text.BadLocationException;  
import javax.swing.text.PlainDocument;  

public class MyDocument extends PlainDocument{  
     int maxLength =20;  
      public MyDocument(int newMaxLength){  
          super();  
          maxLength = newMaxLength;  
      }  
       public MyDocument(){  
          this(20);  
       }   
       public void insertString(int offset,String str,AttributeSet a)throws BadLocationException{  
            if(getLength()+str.length()>maxLength){  
                 return;  
            }  
            else{   
                super.insertString(offset,str,a);  
  
            }      
          }   
}  

import java.awt.Color;  
import java.awt.Container;  
import java.awt.GridLayout;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
  
import javax.swing.JButton;  
import javax.swing.JFrame;  
import javax.swing.JLabel;  
import javax.swing.JMenu;  
import javax.swing.JMenuBar;  
import javax.swing.JMenuItem;  
import javax.swing.JOptionPane;  
import javax.swing.JPanel;  
import javax.swing.JTextField;  
  
public class CounterFrame extends JFrame implements ActionListener {  
  
    private static final long serialVersionUID = 1L;  
    //获得内容面板  
    private Container con=getContentPane();  
    //创建菜单栏,菜单及菜单项  
    private JMenuBar menuBar=new JMenuBar();  
    private JMenu viewmenu=new JMenu("查看(V)");  
    private JMenu helpmenu=new JMenu("帮助(H)");  
    private JMenuItem general =new JMenuItem("标准型(T)",'T');  
    private JMenuItem color =new JMenuItem("个性型(C)",'C');  
    private JMenuItem about=new JMenuItem("关于(A)",'A');  
    //创建一个容量为30个字符的文本框  
    private JTextField textField=new JTextField(30);  
    //创建JLabel  
    private JLabel label=new JLabel();  
    //创建计算器的各种按钮  
    private JButton[] button=new JButton[27];  
    private String[] buttonstr={"退格", "CE", "C", "MC", "7", "8", "9", "/", "sqrt",   
            "MR", "4", "5", "6", "*", "%", "MS", "1", "2", "3", "-", "1/x",   
            "M+", "0", "+/-", ".", "+", "=" };  
    //创建各种面板  
    private JPanel panel=new JPanel();  
    private JPanel childPanel=new JPanel();  
    private JPanel childPanel1=new JPanel();  
    private JPanel childPanel2=new JPanel();  
    private JPanel childPanel3=new JPanel();  
    private JPanel childPanel4=new JPanel();  
    private JPanel childPanel5=new JPanel();  
    private JPanel childPanel6=new JPanel();  
    //创建布局管理器  
    private GridLayout gridLayout=new GridLayout(6,1,6,6);  
    private GridLayout gridLayout1=new GridLayout(1,3,6,6);  
    private GridLayout gridLayout2=new GridLayout(1,6,6,6);  
      
    boolean tem=true; //标识0  
    double  cache=0; //存储器  
    boolean temd=true; //标识小数点  
    boolean temm=false;//标识M+  
    boolean plus=false;  //标识加  
    boolean subtract=false; //标识减  
    boolean mul=false; //标识乘  
    boolean div=false; //标识除  
    boolean rem=false; //百分号  
      
      
    public CounterFrame(){  
        viewmenu.setMnemonic('V');  
        viewmenu.add(general);  
        general.addActionListener(new ActionListener(){  
  
            @Override  
            public void actionPerformed(ActionEvent e) {  
                childPanel.setBackground(Color.red);  
                childPanel1.setBackground(Color.red);  
                childPanel2.setBackground(Color.red);  
                childPanel3.setBackground(Color.red);  
                childPanel4.setBackground(Color.red);  
                childPanel5.setBackground(Color.red);  
                childPanel6.setBackground(Color.red);  
                panel.setBackground(Color.red);  
            }  
              
        });  
        viewmenu.add(color);  
        color.addActionListener(new ActionListener(){  
  
            @Override  
            public void actionPerformed(ActionEvent e) {  
                childPanel.setBackground(Color.blue);  
                childPanel1.setBackground(Color.cyan);  
                childPanel2.setBackground(Color.black);  
                childPanel3.setBackground(Color.darkGray);  
                childPanel4.setBackground(Color.green);  
                childPanel5.setBackground(Color.lightGray);  
                childPanel6.setBackground(Color.orange);  
                panel.setBackground(Color.red);  
                  
                  
                  
            }  
              
        });  
        helpmenu.setMnemonic('H');  
        helpmenu.add(about);  
        about.addActionListener(new ActionListener(){  
  
            @Override  
            public void actionPerformed(ActionEvent e) {  
                 JOptionPane.showMessageDialog(CounterFrame.this,"孤风侠尘计算器1.0 作者:wustrive_2008",  
                            " ",JOptionPane.INFORMATION_MESSAGE);  
            }  
              
        });  
          
        menuBar.add(viewmenu);  
        menuBar.add(helpmenu);  
        this.setJMenuBar(menuBar);  
          
        for(int i=0;i<27;i++){  
            button[i]=new JButton(buttonstr[i]);  
            button[i].addActionListener(this);  
        }  
          
        panel.setLayout(gridLayout);  
        panel.add(childPanel1);  
        childPanel1.add(label);  
        childPanel1.add(textField);  
        label.setBounds(10, 10, 10, 10);  
        textField.setEditable(false);  
        textField.setDocument(new MyDocument());  
        textField.setText("0");  
        textField.setBackground(Color.WHITE);  
        textField.setHorizontalAlignment(JTextField.RIGHT);//设置文字从右边开始显示  
          
        panel.add(childPanel2);  
        childPanel2.setLayout(gridLayout1);  
        childPanel2.add(button[0]);  
        childPanel2.add(button[1]);  
        childPanel2.add(button[2]);  
          
        panel.add(childPanel3);  
        childPanel3.setLayout(gridLayout2);  
        childPanel3.add(button[3]);  
        childPanel3.add(button[4]);  
        childPanel3.add(button[5]);  
        childPanel3.add(button[6]);  
        childPanel3.add(button[7]);  
        childPanel3.add(button[8]);  
          
        panel.add(childPanel4);  
        childPanel4.setLayout(gridLayout2);  
        childPanel4.add(button[9]);  
        childPanel4.add(button[10]);  
        childPanel4.add(button[11]);  
        childPanel4.add(button[12]);  
        childPanel4.add(button[13]);  
        childPanel4.add(button[14]);  
          
        panel.add(childPanel5);  
        childPanel5.setLayout(gridLayout2);  
        childPanel5.add(button[15]);  
        childPanel5.add(button[16]);  
        childPanel5.add(button[17]);  
        childPanel5.add(button[18]);  
        childPanel5.add(button[19]);  
        childPanel5.add(button[20]);  
          
        panel.add(childPanel6);  
        childPanel6.setLayout(gridLayout2);  
        childPanel6.add(button[21]);  
        childPanel6.add(button[22]);  
        childPanel6.add(button[23]);  
        childPanel6.add(button[24]);  
        childPanel6.add(button[25]);  
        childPanel6.add(button[26]);  
          
          
        childPanel.add(panel);  
        con.add(childPanel);  
          
          
        this.setResizable(false);  
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        this.setBounds(400, 300, 400, 300);  
        this.setTitle("孤风侠尘计算器");  
        this.setVisible(true);  
          
    }  
          
    //按钮事件处理  
    @Override  
    public void actionPerformed(ActionEvent e) {  
        if(e.getSource()==button[4]){  
            if(tem==false){  
                textField.setText(textField.getText()+buttonstr[4]);  
            }  
            else{  
                textField.setText(buttonstr[4]);  
                tem=false;  
            }  
        }  
        if(e.getSource()==button[5]){  
            if(tem==false){  
                textField.setText(textField.getText()+buttonstr[5]);  
            }  
            else{  
                textField.setText(buttonstr[5]);  
                tem=false;  
            }  
        }  
        if(e.getSource()==button[6]){  
            if(tem==false){  
                textField.setText(textField.getText()+buttonstr[6]);  
            }  
            else{  
                textField.setText(buttonstr[6]);  
                tem=false;  
            }  
        }  
        if(e.getSource()==button[10]){  
            if(tem==false){  
                textField.setText(textField.getText()+buttonstr[10]);  
            }  
            else{  
                textField.setText(buttonstr[10]);  
                tem=false;  
            }  
        }  
        if(e.getSource()==button[11]){  
            if(tem==false){  
                textField.setText(textField.getText()+buttonstr[11]);  
            }  
            else{  
                textField.setText(buttonstr[11]);  
                tem=false;  
            }  
        }  
        if(e.getSource()==button[12]){  
            if(tem==false){  
                textField.setText(textField.getText()+buttonstr[12]);  
            }  
            else{  
                textField.setText(buttonstr[12]);  
                tem=false;  
            }  
        }  
        if(e.getSource()==button[16]){  
            if(tem==false){  
                textField.setText(textField.getText()+buttonstr[16]);  
            }  
            else{  
                textField.setText(buttonstr[16]);  
                tem=false;  
            }  
        }  
        if(e.getSource()==button[17]){  
            if(tem==false){  
                textField.setText(textField.getText()+buttonstr[17]);  
            }  
            else{  
                textField.setText(buttonstr[17]);  
                tem=false;  
            }  
        }  
        if(e.getSource()==button[18]){  
            if(tem==false){  
                textField.setText(textField.getText()+buttonstr[18]);  
            }  
            else{  
                textField.setText(buttonstr[18]);  
                tem=false;  
            }  
        }  
        if(e.getSource()==button[22]){  
            if(tem==false){  
                textField.setText(textField.getText()+buttonstr[22]);  
            }  
            else{  
                textField.setText(buttonstr[22]);  
                //tem=false;  
            }  
        }  
        if(e.getSource()==button[0]){  
            if(textField.getText().length()>1){  
                textField.setText(textField.getText().substring(0,textField.getText().length()-1));  
            }  
            else{  
                textField.setText("0");  
                tem=true;  
            }  
        }  
        //CE键:清除当前显示的数据  
        if(e.getSource()==button[1]){  
            textField.setText("0");  
            tem=true;  
            tem=true;  
            temd=true;  
            temm=false;  
            plus=false;  
            subtract=false;  
            mul=false;  
            div=false;  
            rem=false;  
              
              
        }  
          
        //C键:清除所有数据  
        if(e.getSource()==button[2]){  
            textField.setText("0");  
            cache=0;  
            tem=true;  
            tem=true;  
            cache=0;  
            temd=true;  
            temm=false;  
            plus=false;  
            subtract=false;  
            mul=false;  
            div=false;  
            rem=false;  
              
        }  
          
        //MR键:将存于存储器中的数据显示出来  
        if(e.getSource()==button[9]){  
            textField.setText(""+cache+"");  
        }  
        //MC键:清除存储器中数据  
        if(e.getSource()==button[3]){  
            cache=0;  
            label.setText("");  
        }  
          
          
        //MS键:将显示的数据存储在存储器中  
        if(e.getSource()==button[15]){  
            cache=Double.parseDouble(textField.getText());  
        }  
          
        //M+键:将显示的数据与存储器中的数据相加并进行存储  
        if(e.getSource()==button[21]){  
                label.setText("M");  
                cache=cache+Double.parseDouble(textField.getText());  
                temm=true;  
              
        }  
        //处理小数点  
        if(e.getSource()==button[24]){  
            if(tem==false&&temd==true&&plus==false&&subtract==false&&mul==false&&rem==false&&div==false){  
                textField.setText(textField.getText()+".");  
                temd=false;  
            }  
        }  
        //处理1/x  
        if(e.getSource()==button[20]){  
            if(temd==true&&plus==false&&subtract==false&&mul==false&&rem==false&&div==false){  
                textField.setText(""+1/Double.parseDouble(textField.getText())+"");  
                tem=true;  
            }  
        }  
        //处理+/-  
        if(e.getSource()==button[23]){  
            if(temd==true&&plus==false&&subtract==false&&mul==false&&rem==false&&div==false){  
                Double dou=Double.parseDouble(textField.getText());  
                dou=-dou;  
                textField.setText(""+dou+"");  
                  
            }  
        }  
        //除法  
        if(e.getSource()==button[7]){  
            if(tem==false&&plus==false&&subtract==false&&mul==false&&rem==false&&div==false){  
                textField.setText(textField.getText()+"/");  
                div=true;  
            }  
        }  
        //乘法  
        if(e.getSource()==button[13]){  
            if(tem==false&&plus==false&&subtract==false&&mul==false&&rem==false&&div==false){  
                textField.setText(textField.getText()+"*");  
                mul=true;  
            }  
        }  
        //百分数表示  
        if(e.getSource()==button[14]){  
            if((plus==true&&subtract==false&&mul==false&&div==false)||(plus==false&&subtract==true&&mul==false&&div==false)||  
                    (plus==false&&subtract==false&&mul==true&&div==false)||(plus==false&&subtract==false&&mul==false&&div==true)){  
                if(plus==true){  
                    int i=textField.getText().indexOf("+");  
                    String substr1=textField.getText().substring(0,i);  
                    String substr2=textField.getText().substring(i+1,textField.getText().length());  
                    textField.setText(""+(Double.parseDouble(substr1)+Double.parseDouble(substr1)*Double.parseDouble(substr2)/100)+"");  
                }  
                if(subtract==true){  
                    int i=textField.getText().indexOf("-");  
                    String substr1=textField.getText().substring(0,i);  
                    String substr2=textField.getText().substring(i+1,textField.getText().length());  
                    textField.setText(""+(Double.parseDouble(substr1)-Double.parseDouble(substr1)*Double.parseDouble(substr2)/100)+"");  
                }  
                if(mul==true){  
                    int i=textField.getText().indexOf("*");  
                    String substr1=textField.getText().substring(0,i);  
                    String substr2=textField.getText().substring(i+1,textField.getText().length());  
                    textField.setText(""+(Double.parseDouble(substr1)*(Double.parseDouble(substr1)*Double.parseDouble(substr2)/100))+"");  
                }  
                if(subtract==true){  
                    int i=textField.getText().indexOf("/");  
                    String substr1=textField.getText().substring(0,i);  
                    String substr2=textField.getText().substring(i+1,textField.getText().length());  
                    textField.setText(""+(Double.parseDouble(substr1)/(Double.parseDouble(substr1)*Double.parseDouble(substr2)/100))+"");  
                }  
            }  
                  
              
        }  
        //加法  
        if(e.getSource()==button[25]){  
            if(tem==false&&plus==false&&subtract==false&&mul==false&&rem==false&&div==false){  
                textField.setText(textField.getText()+"+");  
                plus=true;  
            }  
        }  
        //减法  
        if(e.getSource()==button[19]){  
            if(tem==false&&plus==false&&subtract==false&&mul==false&&rem==false&&div==false){  
                textField.setText(textField.getText()+"-");  
                subtract=true;  
            }  
        }  
        //等于  
        if(e.getSource()==button[26]){  
            if(plus==true){  
                int i=textField.getText().indexOf("+");  
                String substr1=textField.getText().substring(0,i);  
                String substr2=textField.getText().substring(i+1,textField.getText().length());  
                if(substr2.length()==0){  
                    textField.setText(""+substr1+"");  
                }  
                else{  
                    double result=Double.parseDouble(substr1)+Integer.parseInt(substr2);  
                    textField.setText(""+result+"");  
                }  
                  
                plus=false;  
                tem=true;  
            }  
            if(subtract==true){  
                int i=textField.getText().indexOf("-");  
                String substr1=textField.getText().substring(0,i);  
                String substr2=textField.getText().substring(i+1,textField.getText().length());  
                if(substr2.length()==0){  
                    textField.setText(""+substr1+"");  
                }  
                else{  
                    double result=Double.parseDouble(substr1)-Integer.parseInt(substr2);  
                    textField.setText(""+result+"");  
                }  
                  
                subtract=false;  
                tem=true;  
            }  
            if(mul==true){  
                int i=textField.getText().indexOf("*");  
                String substr1=textField.getText().substring(0,i);  
                String substr2=textField.getText().substring(i+1,textField.getText().length());  
                if(substr2.length()==0){  
                    textField.setText(""+substr1+"");  
                }  
                else{  
                    double result=Double.parseDouble(substr1)*Integer.parseInt(substr2);  
                    textField.setText(""+result+"");  
                }  
                  
                mul=false;  
                tem=true;  
            }  
            if(div==true){  
                int i=textField.getText().indexOf("/");  
                String substr1=textField.getText().substring(0,i);  
                String substr2=textField.getText().substring(i+1,textField.getText().length());  
                if(substr2.length()==0){  
                    textField.setText(""+substr1+"");  
                }  
                else if(Double.parseDouble(substr2)==0){  
                    textField.setText("除数不能为零");  
                }  
                else{  
                    double result=Double.parseDouble(substr1)/Double.parseDouble(substr2);  
                    textField.setText(""+result+"");  
                }  
                  
                div=false;  
                tem=true;  
            }  
        }  
        //求平方根  
        if(e.getSource()==button[8]){  
            if(plus==false&&subtract==false&&mul==false&&rem==false&&div==false&&tem==false){  
                textField.setText(""+Math.sqrt(Double.parseDouble(textField.getText()))+"");  
                tem=true;  
            }  
              
        }  
    }  
      
  
}  


网友评论    (发表评论)

共2 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...