⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculator.java

📁 Java程序设计实验与实训源代码经典的JAVA学习教材
💻 JAVA
字号:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;


class Calculator{
	public static void main(String[] args) {
		MyFrameSix myFrame=new MyFrameSix();
		myFrame.show();
	}
}

class MyFrameSix extends JFrame implements ActionListener{
	private JLabel myLabel=new JLabel("简易计算器");
	private JTextField myResult=new JTextField("0",15);
	private JButton mybs=new JButton("退格");
	private JButton mycl=new JButton("清零");
	private JButton num0=new JButton("0");
	private JButton num1=new JButton("1");
	private JButton num2=new JButton("2");
	private JButton num3=new JButton("3");
	private JButton num4=new JButton("4");
	private JButton num5=new JButton("5");
	private JButton num6=new JButton("6");
	private JButton num7=new JButton("7");
	private JButton num8=new JButton("8");
	private JButton num9=new JButton("9");
	private JButton add=new JButton("+");
	private JButton minus=new JButton("-");
	private JButton multi=new JButton("*");
	private JButton divid=new JButton("/");
	private JButton equal=new JButton("=");
	
	private long tmp=0;
	private long opt1,opt2;
	private int flag;
	
	
	
	MyFrameSix(){
		Container myContentPane=getContentPane();
		GridBagLayout mygbl=new GridBagLayout();
		GridBagConstraints mygbc=new GridBagConstraints();
		myContentPane.setLayout(mygbl);
		
		myLabel.setForeground(Color.blue);
		mygbc.gridx=1;mygbc.gridy=1;
		mygbc.gridwidth=GridBagConstraints.REMAINDER;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.NONE;
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbc.insets=new Insets(2,1,1,1);
		mygbl.setConstraints(myLabel,mygbc);
		myContentPane.add(myLabel);
		
		myResult.setEditable(false);
		myResult.setHorizontalAlignment(JTextField.RIGHT);
		mygbc.gridx=1;mygbc.gridy=2;
		mygbc.gridwidth=GridBagConstraints.REMAINDER;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbc.insets=new Insets(2,1,1,1);
		mygbl.setConstraints(myResult,mygbc);
		myContentPane.add(myResult);
		
		mybs.setForeground(Color.red);//添加删除和退格
		mybs.addActionListener(this);
		mygbc.gridx=1;mygbc.gridy=3;
		mygbc.gridwidth=2;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(mybs,mygbc);
		myContentPane.add(mybs);
		
		mycl.setForeground(Color.red);
		mycl.addActionListener(this);
		mygbc.gridx=3;mygbc.gridy=3;
		mygbc.gridwidth=2;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(mycl,mygbc);
		myContentPane.add(mycl);
		
		num7.addActionListener(this);
		mygbc.gridx=1;mygbc.gridy=4;//添加7、8、9、/
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(num7,mygbc);
		myContentPane.add(num7);
		
		num8.addActionListener(this);
		mygbc.gridx=2;mygbc.gridy=4;
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(num8,mygbc);
		myContentPane.add(num8);
		
		num9.addActionListener(this);
		mygbc.gridx=3;mygbc.gridy=4;
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(num9,mygbc);
		myContentPane.add(num9);
		
		divid.addActionListener(this);
		divid.setForeground(Color.red);
		mygbc.gridx=4;mygbc.gridy=4;
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(divid,mygbc);
		myContentPane.add(divid);
		
		num4.addActionListener(this);
		mygbc.gridx=1;mygbc.gridy=5;//添加4、5、6、*
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(num4,mygbc);
		myContentPane.add(num4);
		
		num5.addActionListener(this);
		mygbc.gridx=2;mygbc.gridy=5;
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(num5,mygbc);
		myContentPane.add(num5);
		
		num6.addActionListener(this);
		mygbc.gridx=3;mygbc.gridy=5;
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(num6,mygbc);
		myContentPane.add(num6);
		
		multi.addActionListener(this);
		multi.setForeground(Color.red);
		mygbc.gridx=4;mygbc.gridy=5;
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(multi,mygbc);
		myContentPane.add(multi);
		
		num1.addActionListener(this);
		mygbc.gridx=1;mygbc.gridy=6;//添加1、2、3、-
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(num1,mygbc);
		myContentPane.add(num1);
		
		num2.addActionListener(this);
		mygbc.gridx=2;mygbc.gridy=6;
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(num2,mygbc);
		myContentPane.add(num2);
		
		num3.addActionListener(this);
		mygbc.gridx=3;mygbc.gridy=6;
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(num3,mygbc);
		myContentPane.add(num3);
		
		minus.addActionListener(this);
		minus.setForeground(Color.red);
		mygbc.gridx=4;mygbc.gridy=6;
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(minus,mygbc);
		myContentPane.add(minus);
		
		num0.addActionListener(this);
		mygbc.gridx=1;mygbc.gridy=7;//添加0、=、+
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(num0,mygbc);
		myContentPane.add(num0);
		
		equal.addActionListener(this);
		equal.setForeground(Color.red);
		mygbc.gridx=2;mygbc.gridy=7;
		mygbc.gridwidth=2;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(equal,mygbc);
		myContentPane.add(equal);
		
		add.addActionListener(this);
		add.setForeground(Color.red);
		mygbc.gridx=4;mygbc.gridy=7;
		mygbc.gridwidth=1;
		mygbc.gridheight=1;
		mygbc.fill=GridBagConstraints.HORIZONTAL;
		mygbc.insets=new Insets(2,1,1,1);
		mygbc.anchor=GridBagConstraints.CENTER;
		mygbl.setConstraints(add,mygbc);
		myContentPane.add(add);
		
		setSize(200,250);
		setResizable(false);
		addWindowListener(new QuitWindow());
	}
	
	public void actionPerformed(ActionEvent e){
		if(e.getSource()==mybs&&myResult.getText().length()>0){
			tmp=(tmp-tmp%10)/10;
			myResult.setText(String.valueOf(tmp));
		}
		
		if(e.getSource()==mycl){
			myResult.setText("0");
			tmp=0;
		}
		
		if((e.getSource()==num0||e.getSource()==num1||e.getSource()==num2||
		    e.getSource()==num3||e.getSource()==num4||e.getSource()==num5||
		    e.getSource()==num6||e.getSource()==num7||e.getSource()==num8||
		    e.getSource()==num9)&&myResult.getText().length()<10){
		   		tmp=10*tmp+Long.valueOf(e.getActionCommand()).longValue();
				myResult.setText(String.valueOf(tmp));
		}
		
		if(e.getSource()==add||e.getSource()==minus||e.getSource()==multi||e.getSource()==divid){
			opt1=Long.valueOf(myResult.getText()).longValue();
			tmp=0;
			if(e.getSource()==add)   flag=1;
			if(e.getSource()==minus) flag=2;
			if(e.getSource()==multi) flag=3;
			if(e.getSource()==divid) flag=4;				
		}
		
		if(e.getSource()==equal){
			if(tmp==0)
				opt2=Long.valueOf(myResult.getText()).longValue();
			else
				opt2=tmp;
			
			if(flag==1){
				opt1=opt1+opt2;
				myResult.setText(String.valueOf(opt1));
			}
			if(flag==2){
				opt1=opt1-opt2;
				myResult.setText(String.valueOf(opt1));
			}
			if(flag==3){
				opt1=opt1*opt2;
				myResult.setText(String.valueOf(opt1));}
			
			if(flag==4)
				try{
					opt1=opt1/opt2;
					myResult.setText(String.valueOf(opt1));
					}catch(ArithmeticException exception){						
						opt1=opt2=0;
						tmp=0;
						myResult.setText("除数不能为零");
						}	
		}
	}	            
}

class QuitWindow extends WindowAdapter{
	public void windowClosing(WindowEvent e){
		System.exit(0);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -