counter.java

来自「一个计算器的代码」· Java 代码 · 共 401 行

JAVA
401
字号
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Counter extends Frame
{ 
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	GridLayout gl1,gl2,gl3; 
	Panel p0,p1,p2,p3; 
	JTextField tf1,tf2;  
	Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26; 
	StringBuffer str;
	double x,y; 
	int z;
	static double m;
	
	public Counter() 
	{   
		gl1=new GridLayout(1,4,10,0);
		gl2=new GridLayout(4,1,0,15); 
		gl3=new GridLayout(4,5,10,15); 
		
		tf1=new JTextField(27); 
		tf1.setHorizontalAlignment(JTextField.RIGHT); 
		tf1.setEnabled(false); 
		tf1.setText("0");  
		tf1.setDisabledTextColor(Color.black);
		
		tf2=new JTextField();
		tf2.setHorizontalAlignment(JTextField.CENTER);
		tf2.setEditable(false);
	   
		b0=new Button("Back"); 
		b0.setForeground(Color.red); 
		b0.addActionListener(new Bt()); 
		b1=new Button("CE"); 
		b1.setForeground(Color.red); 
		b1.addActionListener(new Bt()); 
		b2=new Button("C"); 
		b2.setForeground(Color.red); 
		b2.addActionListener(new Bt());  
		b3=new Button("MC"); 
		b3.setForeground(Color.red); 
		b3.addActionListener(new Bt()); 
		b4=new Button("MR"); 
		b4.setForeground(Color.red); 
		b4.addActionListener(new Bt()); 
		b5=new Button("MS"); 
		b5.setForeground(Color.red); 
		b5.addActionListener(new Bt()); 
		b6=new Button("M+"); 
		b6.setForeground(Color.red); 
		b6.addActionListener(new Bt()); 
		b7=new Button("7"); 
		b7.setForeground(Color.blue); 
		b7.addActionListener(new Bt()); 
		b8=new Button("8"); 
		b8.setForeground(Color.blue); 
		b8.addActionListener(new Bt()); 
		b9=new Button("9"); 
		b9.setForeground(Color.blue); 
		b9.addActionListener(new Bt()); 
		b10=new Button("/"); 
		b10.setForeground(Color.red); 
		b10.addActionListener(new Bt()); 
		b11=new Button("sqrt"); 
		b11.setForeground(Color.blue); 
		b11.addActionListener(new Bt()); 
		b12=new Button("4"); 
		b12.setForeground(Color.blue); 
		b12.addActionListener(new Bt()); 
		b13=new Button("5"); 
		b13.setForeground(Color.blue); 
		b13.addActionListener(new Bt()); 
		b14=new Button("6"); 
		b14.setForeground(Color.blue); 
		b14.addActionListener(new Bt()); 
		b15=new Button("*"); 
		b15.setForeground(Color.red); 
		b15.addActionListener(new Bt()); 
		b16=new Button("%"); 
		b16.setForeground(Color.blue); 
		b16.addActionListener(new Bt()); 
		b17=new Button("1"); 
		b17.setForeground(Color.blue); 
		b17.addActionListener(new Bt()); 
		b18=new Button("2"); 
		b18.setForeground(Color.blue); 
		b18.addActionListener(new Bt()); 
		b19=new Button("3"); 
		b19.setForeground(Color.blue); 
		b19.addActionListener(new Bt()); 
		b20=new Button("-"); 
		b20.setForeground(Color.red); 
		b20.addActionListener(new Bt()); 
		b21=new Button("1/X"); 
		b21.setForeground(Color.blue); 
		b21.addActionListener(new Bt()); 
		b22=new Button("0"); 
		b22.setForeground(Color.blue); 
		b22.addActionListener(new Bt()); 
		b23=new Button("+/-"); 
		b23.setForeground(Color.blue); 
		b23.addActionListener(new Bt()); 
		b24=new Button("."); 
		b24.setForeground(Color.blue); 
		b24.addActionListener(new Bt()); 
		b25=new Button("+"); 
		b25.setForeground(Color.red); 
		b25.addActionListener(new Bt()); 
		b26=new Button("="); 
		b26.setForeground(Color.red); 
		b26.addActionListener(new Bt()); 
				 
		p0=new Panel(); 
		p1=new Panel(); 
		p2=new Panel();
		p3=new Panel(); 
		 
		str=new StringBuffer(); 
				
		p0.add(tf1); 
		p0.setBounds(10,25,300,40); 
		 
		p1.setLayout(gl1); 
		p1.add(tf2);
		p1.add(b0); 
		p1.add(b1); 
		p1.add(b2); 
		p1.setBounds(10,65,300,25); 
		
		p2.setLayout(gl2); 
		p2.add(b3); 
		p2.add(b4); 
		p2.add(b5); 
		p2.add(b6); 
		p2.setBounds(10,110,40,150); 

		p3.setLayout(gl3);
		p3.add(b7); 
		p3.add(b8); 
		p3.add(b9); 
		p3.add(b10); 
		p3.add(b11); 
		p3.add(b12); 
		p3.add(b13); 
		p3.add(b14); 
		p3.add(b15); 
		p3.add(b16); 
		p3.add(b17); 
		p3.add(b18); 
		p3.add(b19); 
		p3.add(b20); 
		p3.add(b21); 
		p3.add(b22); 
		p3.add(b23); 
		p3.add(b24); 
		p3.add(b25); 
		p3.add(b26); 
		p3.setBounds(60,110,250,150); 
		
		setLayout(null); 
		add(p0); 
		add(p1);  
		add(p2);
		add(p3); 
		setResizable(false);
		
		addWindowListener
		(
				new WindowAdapter()
				{ 
					public void windowClosing(WindowEvent e1) 
					{ 
						System.exit(0); 
					} 
				}
		); 
		setBackground(Color.lightGray); 
		setBounds(0,0,320,280); 
		setVisible(true); 
		this.setTitle("揹戩");
	} 
		 
	class Bt implements ActionListener 
	{ 
		public void actionPerformed(ActionEvent e2) 
		{ 
		try
		{ 		
			if(e2.getSource()==b1)    // CE
			{ 
				tf1.setText("0");
				x=Double.parseDouble(tf1.getText());
				str.setLength(0); 
			} 
			else if(e2.getSource()==b2)   // C
			{ 
				tf1.setText("0"); 
				x=Double.parseDouble(tf1.getText());
				y=Double.parseDouble(tf1.getText());
				str.setLength(0); 
			} 
			else if(e2.getSource()==b23)   // +/-
			{ 
				y=Double.parseDouble(tf1.getText()); 
				tf1.setText(""+(-y));
				y=+(-y);
				str.setLength(0);
			} 
			else if(e2.getSource()==b25)  // +
			{ 
				x=Double.parseDouble(tf1.getText()); 
				str.setLength(0);
				y=Double.parseDouble(tf1.getText());
				z=0; 
			} 
			else if(e2.getSource()==b20)  // -
			{ 
				x=Double.parseDouble(tf1.getText()); 
				str.setLength(0);
				y=Double.parseDouble(tf1.getText());
				z=1; 
			} 
			else if(e2.getSource()==b15) // *
			{ 
				x=Double.parseDouble(tf1.getText()); 
				str.setLength(0); 
				y=Double.parseDouble(tf1.getText());
				z=2; 
			} 
			else if(e2.getSource()==b10)  // /
			{ 
				x=Double.parseDouble(tf1.getText()); 
				str.setLength(0); 
				y=Double.parseDouble(tf1.getText());
				z=3; 
			} 
			else if(e2.getSource()==b26)  // =
			{ 
				str.setLength(0); 
				switch(z) 
				{ 
					case 0 : tf1.setText(""+(x+y));	
					         x=Double.parseDouble(tf1.getText());
					         break; 
					case 1 : tf1.setText(""+(x-y));	
							 x=Double.parseDouble(tf1.getText());
							 break; 
					case 2 : tf1.setText(""+(x*y));	
						     x=Double.parseDouble(tf1.getText());
						     break; 
					case 3 : tf1.setText(""+(x/y));	
						     x=Double.parseDouble(tf1.getText());
						     break; 
				} 
			} 
			else if(e2.getSource()==b24)  // .
			{ 
				if(tf1.getText().indexOf(".")!=-1)		
				{ 	
					
				}						
				else
				{   
					if(tf1.getText().equals("0"))
					{ 
						str.setLength(0); 
						tf1.setText((str.append("0"+e2.getActionCommand())).toString()); 
					} 
					else if(tf1.getText().equals(""))
					{ 
					} 
					else 
					{ 
						tf1.setText(str.append(e2.getActionCommand()).toString()); 
					} 
				} 	
			} 
			else if(e2.getSource()==b11)  // sqrt
			{ 
				y=Double.parseDouble(tf1.getText()); 
				if(y<0)
				{
					tf1.setText("柍岠側抣偱偡丅"); 
				}
				else
				{
					tf1.setText(""+Math.sqrt(y));
					y=Math.sqrt(y);
					str.setLength(0); 
				} 
			}
			else if(e2.getSource()==b16)  // %
			{ 
				y=Double.parseDouble(tf1.getText()); 
				tf1.setText(""+(x*y*0.01)); 
				y=x*y*0.01;
				str.setLength(0); 
			} 
			else if(e2.getSource()==b21) // 1/x
			{ 			
				y=Double.parseDouble(tf1.getText()); 
				if(y==0) 
				{ 			
					tf1.setText("0偱妱傞偙偲偼偱偒傑偣傫丅"); 
				} 
				else 
				{ 
					tf1.setText(""+(1/y));
					y=1/y;
					str.setLength(0); 
				}
			} 
			else if(e2.getSource()==b3)  // MC
			{ 
				m=0d; 
				tf2.setText(""); 
				str.setLength(0); 
			} 
			else if(e2.getSource()==b4)  // MR
			{ 
				if(tf2.getText()!="")
				{ 
				tf1.setText(""+m); 
				} 
			} 
			else if(e2.getSource()==b5)  // MS
			{
				m=Double.parseDouble(tf1.getText()); 
				tf2.setText("M"); 
				//tf1.setText("0"); 
				str.setLength(0); 
			} 
			else if(e2.getSource()==b6)  //M+
			{ 
				m=m+Double.parseDouble(tf1.getText());
				tf2.setText("M");
				str.setLength(0);
			} 
			else if(e2.getSource()==b22) // 0
			{
				//if(tf1.getText().indexOf(".")==-1)
				//{ 	//if(e2.getActionCommand().equals("0"))
					//str.setLength(0);
				if(tf1.getText().equals("0"))
				{
					
				}
				else 
				{ 
					tf1.setText(str.append(e2.getActionCommand()).toString());
					y=Double.parseDouble(tf1.getText()); 					
				} 
			} 
			else if(e2.getSource()==b0) // Back
			{ 
				if(!tf1.getText().equals("0"))
				{ 
					if(str.length()!=1) 
					{ 
						tf1.setText(str.delete(str.length()-1,str.length()).toString());
					} 
					else 
					{ 
						tf1.setText("0"); 
						str.setLength(0); 
					} 
				} 
				y=Double.parseDouble(tf1.getText()); 
			} 
			else
			{ 
				if(tf1.getText().length()<32)
				{
					tf1.setText(str.append(e2.getActionCommand()).toString()); 
					y=Double.parseDouble(tf1.getText()); 
				}
			} 
		}
			catch(NumberFormatException e)
			{ 
				tf1.setText("NumberFormatIsUnnormal"); 
			} 
			catch(StringIndexOutOfBoundsException e)
			{ 
				tf1.setText("StringIndexOutOfBounds"); 
			} 
		} 
	} 
	
	public static void main(String args[]) 
	{ 
		new Counter(); 
	} 
}
			

⌨️ 快捷键说明

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