用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


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

java计算器

2015-04-12 作者: java源代码大全举报

[java]代码库

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;  
            }  
              
        }  
    }  
      
  
}  //源代码片段来自云代码http://yuncode.net



package Experience5;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.*;

public class SimpleCalculator extends JFrame implements ActionListener{
	JTextField jText;
	Boolean state=false;
	double firstOperator,secondOperator;
	int operate;
	int count=0;
	
	//控件的定义
	JPanel jUpPanel;
	JPanel jDownPanel;
	GridBagLayout gbLayout;
	GridBagConstraints gbConstraints;
	String[] jButNames={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};
	JButton[] jButs =new JButton[16];
	
	public static void main(String args[])
	{
		SimpleCalculator calculator=new SimpleCalculator();
	}
	
	public SimpleCalculator()
	{
		super("A Simple Calculator");
		

		//窗体的设定
		this.setSize(400, 300);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		//this.pack();
		this.setVisible(true);
		
		//框架的定义
		jUpPanel=new JPanel(); 			
		jDownPanel=new JPanel();
		gbLayout=new GridBagLayout();
		gbConstraints=new GridBagConstraints();
		this.getContentPane().setLayout(gbLayout);
		
		gbConstraints.weightx = 1;
		gbConstraints.weighty = 0;
		gbConstraints.fill = GridBagConstraints.BOTH;
		gbConstraints.gridx=0;
		gbConstraints.gridy=0;
		gbConstraints.gridheight=1;
		gbConstraints.gridwidth=4;
		gbLayout.setConstraints(jUpPanel, gbConstraints);
		this.getContentPane().add(jUpPanel);
		gbConstraints.weighty = 1;
		gbConstraints.gridx=0;
		gbConstraints.gridy=1;
		gbConstraints.gridheight=4;
		gbConstraints.gridwidth=4;
		gbLayout.setConstraints(jDownPanel, gbConstraints);	
		this.getContentPane().add(jDownPanel);
		/*
		gbConstraints.weightx = 1;
		gbConstraints.weighty = 0;
		gbConstraints.fill = GridBagConstraints.BOTH;
		addComponent(jUpPanel, gbLayout, gbConstraints, 0, 0, 4, 1);
		gbConstraints.weighty = 1;
		addComponent(jDownPanel, gbLayout, gbConstraints, 1, 0, 4, 4);	
		this.getContentPane().setLayout(gbLayout);
		*/

		
		//jUpPanel内容的填充
		jText=new JTextField();
		jText.setHorizontalAlignment(JTextField.RIGHT);
		jText.setEnabled(false);
		jText.setText("本计算器支持连续操作,即1+3-4+5=这样的操作");
		jUpPanel.setLayout(new BorderLayout());
		jUpPanel.add(jText);
		
		//jDownPanel内容的填充
		jDownPanel.setLayout(new GridLayout(4,4));
		for(int i=0;i<16;i++)
		{
			jButs[i]=new JButton(jButNames[i]);	
			jButs[i].addActionListener(this);
			jButs[i].setActionCommand(jButs[i].getName());
			jDownPanel.add(jButs[i]);
		}
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
		if(e.getSource()==jButs[3]||e.getSource()==jButs[7]||e.getSource()==jButs[11]||e.getSource()==jButs[15])
		{
			double temp=0.0;
			count++;
			try
			{
				temp=Double.parseDouble(jText.getText());
			}
			catch(Exception ex)
			{
				ex.printStackTrace();
				JOptionPane.showMessageDialog((Component) e.getSource(), "第一个操作数不正确");
				System.exit(0);
			}
			if(count>1)
			{
				if(operate==1)
					temp=firstOperator/temp;
				else if(operate==2)
					temp=firstOperator*temp;
				else if(operate==3)
					temp=firstOperator-temp;
				else
					temp=firstOperator+temp;
				jText.setText(Double.toString(temp));
				state=false;
			}
			else
			{
				jText.setText("");
			}
			if(e.getSource()==jButs[3])
				operate=1;
			else if(e.getSource()==jButs[7])
				operate=2;
			else if(e.getSource()==jButs[11])
				operate=3;
			else
				operate=4;
			firstOperator=temp;
		}
		else if(e.getSource()==jButs[14])
		{
			double answer;
			count=0;
			try
			{
				secondOperator=Double.parseDouble(jText.getText());
			}
			catch(Exception ex)
			{
				ex.printStackTrace();
				JOptionPane.showMessageDialog((Component) e.getSource(), "第二个操作数不正确");
				System.exit(0);
			}
			
			if(operate==1)
				answer=firstOperator/secondOperator;
			else if(operate==2)
				answer=firstOperator*secondOperator;
			else if(operate==3)
				answer=firstOperator-secondOperator;
			else
				answer=firstOperator+secondOperator;
			jText.setText(Double.toString(answer));
			state=false;
		}
		else
		{
			if(state)
				jText.setText(jText.getText()+e.getActionCommand());
			else
			{
				state=true;
				jText.setText(e.getActionCommand());
				
			}
		}
	}
	
	/*
	private void addComponent(Component c, GridBagLayout g, 
			GridBagConstraints gc, int row, int column, int width, int height) {
				gc.gridx = column;
				gc.gridy = row;
				gc.gridwidth = width;
				gc.gridheight = height;
				g.setConstraints(c, gc);
				add(c);
		}
	*/
	


}
//源代码片段来自云代码http://yuncode.net
			
			


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

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


扫码下载

加载中,请稍后...

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

加载中,请稍后...