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

📄 calculator.java

📁 实现了WINDOWS计算器的所有功能,界面和WINDOWS的一莫一样,这是不完善版本,
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	this.setDefaultCloseOperation(3);
	

	
 }    //     构造方法完毕---------构造完毕-------构造完毕-----构造完毕------构造完毕-----构造完毕------构造完毕-----构造完毕------------	
/***********#####################################$$$$$$$$$$$$$$$$$$事件的处理$$$$$$$$$$$$$$$$$###################################***********************/
public void actionPerformed(ActionEvent e)
{
	
	//--------------------------------------item[0]--item[18]-----以下事对-菜单项-单选框-事件的处理----jrb[0]--jrb[10]--------------------------------------------------
	if(e.getSource()==item[0])//粘贴
	{
		
	}
	if(e.getSource()==item[1])//复制
	{}
	if(e.getSource()==item[2])//标准型
	{
		item[2].setText("● 标准型(I)");
		item[3].setText("   科学型(S)");
		menu2.removeAll();		
		menu2.insert(item[2], 1);
		menu2.insert(item[3], 2);
		menu2.insertSeparator(2);
		menu2.insert(item[15], 3);	
		textField1.setBounds(10, 0, 240, 25);
		jp.setVisible(false);
		jp1.setVisible(false);		
        jp7.setVisible(false);
        jc1.setVisible(false);
        jc2.setVisible(false);
        jl4.setVisible(false);
        
        jp3.setVisible(false);
        jp4.setVisible(false);
        
        jb[24].setVisible(false);
        jb[33].setVisible(false);
        jb[39].setVisible(false);
        jb[45].setVisible(false);
        
        jb[32].setText("sqrt");
        jb[32].setForeground(Color.BLUE);
        jb[38].setText("%");
        jb[44].setText("1/x");
        jb[44].setForeground(Color.BLUE);
        for(int i=51;i<58;i++)
        	jb[i].setVisible(false);
        this.setBounds(300,300,265,245);
        jl5.setBounds(10, 35, 25, 25);
        jp2.setBounds(50,35,197,25);
        jp5.setBounds(5, 70, 35, 150);
        jp6.setBounds(50, 70, 240, 150);
     
	}
	
	
	if(e.getSource()==item[3])//科学性
	{
		item[2].setText("   标准型(I)");
		item[3].setText("● 科学型(S)");
	    menu2.removeAll();
		for(int i=2;i<16;i++)
		{
			menu2.add(item[i]);
	        if(i==3||i==7||i==14)
	        	menu2.addSeparator();
		}
	   textField1.setBounds(40,0,450,25);
	    jp.setVisible(true);
	    if(jrb[1].isSelected())	   		
		jp1.setVisible(true);	    
	    else	    
		jp7.setVisible(true);	   		  		
        jc1.setVisible(true);
        jc2.setVisible(true);
        jl4.setVisible(true);
	    
        jp3.setVisible(true);
        jp4.setVisible(true);
        jb[24].setVisible(true);
        
        jb[33].setVisible(true);
        jb[39].setVisible(true);
        jb[45].setVisible(true);
        
        jb[32].setText("Mod");
        jb[32].setForeground(Color.red);
        jb[38].setText("Or");
        jb[38].setForeground(Color.red);
        jb[44].setText("Lsh");
        jb[44].setForeground(Color.red);
        for(int i=51;i<58;i++)
        	jb[i].setVisible(true);
        
      
    	this.setBounds(300,300,535,300);
        jl5.setBounds(175, 55, 25, 25);
        jp2.setBounds(320,55,197,25);
        jp5.setBounds(190, 85, 35, 150);
        jp6.setBounds(300, 85, 222, 150); 
	}
	
   //对左边radiobutton的处理-----------------
   try{
	   
  
   if(e.getSource()==item[4]||e.getSource()==jrb[0])                       //十六进制
   {  

	   jp1.setVisible(false);
	   jp7.setVisible(true);
	   item[4].setText("● 十六进制(H)");
	   item[5].setText("   十进制(D)");
	   item[6].setText("   八进制(O)");
	   item[7].setText("   二进制(B)");
	   
	   item[8].setVisible(false);
	   item[9].setVisible(false);
	   item[10].setVisible(false);
	   item[11].setVisible(true);
	   item[12].setVisible(true);
	   item[13].setVisible(true);
	   item[14].setVisible(true);
	   
		jrb[0].setSelected(true);
	   for(int i=52;i<58;i++)                      //使ABCDEF有效	   
		   jb[i].setEnabled(true);
		   clickable=false;                       //使小数点无效
	   
	   
	   jb[28].setEnabled(true);
       jb[29].setEnabled(true);
       jb[30].setEnabled(true);
       jb[34].setEnabled(true);
       jb[35].setEnabled(true);
       jb[36].setEnabled(true);
	   jb[41].setEnabled(true);
	   jb[42].setEnabled(true);                   //以上八个是被二进制屏蔽了的
	   
	   jb[5].setEnabled(false);
	   jb[8].setEnabled(false);
	   jb[9].setEnabled(false);
	   jb[11].setEnabled(false);
	   jb[14].setEnabled(false);
	   jb[17].setEnabled(false);
	   jb[24].setEnabled(false);
	   
	    String hex=textField1.getText();
	    int inthex=Integer.parseInt(hex, jinzhi);//先把数变为10进制  
	    textField1.setText(convert.decHex(inthex)) ;
	    jinzhi=16;


   }
   if(e.getSource()==item[5]||e.getSource()==jrb[1])                      //十进制
   {
	   jp1.setVisible(true);
	   jp7.setVisible(false);
	   item[4].setText("   十六进制(H)");
	   item[5].setText("● 十进制(D)");
	   item[6].setText("   八进制(O)");
	   item[7].setText("   二进制(B)");
	   
	   item[8].setVisible(true);
	   item[9].setVisible(true);
	   item[10].setVisible(true);
	   item[11].setVisible(false);
	   item[12].setVisible(false);
	   item[13].setVisible(false);
	   item[14].setVisible(false);
	   
		jrb[1].setSelected(true);
	   for(int i=52;i<58;i++)                      
		   jb[i].setEnabled(false);
		   clickable=true;                      
	   
	   
	   jb[28].setEnabled(true);
       jb[29].setEnabled(true);
       jb[30].setEnabled(true);
       jb[34].setEnabled(true);
       jb[35].setEnabled(true);
       jb[36].setEnabled(true);
	   jb[41].setEnabled(true);
	   jb[42].setEnabled(true);                      //以上八个是被二进制屏蔽了的
	   
	   jb[5].setEnabled(true);
	   jb[8].setEnabled(true);
	   jb[9].setEnabled(true);
	   jb[11].setEnabled(true);
	   jb[14].setEnabled(true);
	   jb[17].setEnabled(true);
	   jb[24].setEnabled(true);
	   
	   String dec=textField1.getText();
	    int intdec=Integer.parseInt(dec,jinzhi);
	   // textField1.setText(convert.decDec(intdec)); //本句会把123变成321
	    textField1.setText(intdec+"");
	    jinzhi=10;

   }
   if(e.getSource()==item[6]||e.getSource()==jrb[2])                       //八进制
   {
	   jp1.setVisible(false);
	   jp7.setVisible(true);
	   item[4].setText("   十六进制(H)");
	   item[5].setText("   十进制(D)");
	   item[6].setText("● 八进制(O)");
	   item[7].setText("   二进制(B)");
	   
	   item[8].setVisible(false);
	   item[9].setVisible(false);
	   item[10].setVisible(false);
	   item[11].setVisible(true);
	   item[12].setVisible(true);
	   item[13].setVisible(true);
	   item[14].setVisible(true);
	   
		jrb[2].setSelected(true);
	   for(int i=52;i<58;i++)                      	   
		   jb[i].setEnabled(false);
		   clickable=false;                      
	   
	   
	   jb[5].setEnabled(false);
	   jb[8].setEnabled(false);
	   jb[9].setEnabled(false);
	   jb[11].setEnabled(false);
	   jb[14].setEnabled(false);
	   jb[17].setEnabled(false);
	   jb[24].setEnabled(false);                    //以上七个是被二进制屏蔽了的
	   
	   jb[29].setEnabled(false);
	   jb[30].setEnabled(false);
	   jb[28].setEnabled(true);
	   jb[34].setEnabled(true);
	   jb[35].setEnabled(true);
	   jb[36].setEnabled(true);
	   jb[41].setEnabled(true);
	   jb[42].setEnabled(true);
	   
	    String oct =textField1.getText();
	    int intoct=Integer.parseInt(oct,jinzhi);  
	    textField1.setText(convert.decOct(intoct)) ;
	    jinzhi=8;
   }
   if(e.getSource()==item[7]||e.getSource()==jrb[3])                    //二进制
   {
	   jp1.setVisible(false);
	   jp7.setVisible(true);
	   item[4].setText("   十六进制(H)");
	   item[5].setText("   十进制(D)");
	   item[6].setText("   八进制(O)");
	   item[7].setText("● 二进制(B)");
	   
	   item[8].setVisible(false);
	   item[9].setVisible(false);
	   item[10].setVisible(false);
	   item[11].setVisible(true);
	   item[12].setVisible(true);
	   item[13].setVisible(true);
	   item[14].setVisible(true);
	   
		jrb[3].setSelected(true);
	   for(int i=52;i<58;i++)                      	   
		   jb[i].setEnabled(false);
		   clickable=false;                      
	   
		   jb[28].setEnabled(false);
	       jb[29].setEnabled(false);
	       jb[30].setEnabled(false);
	       jb[34].setEnabled(false);
	       jb[35].setEnabled(false);
	       jb[36].setEnabled(false);
		   jb[41].setEnabled(false);
		   jb[42].setEnabled(false);
	   
	   jb[5].setEnabled(false);
	   jb[8].setEnabled(false);
	   jb[9].setEnabled(false);
	   jb[11].setEnabled(false);
	   jb[14].setEnabled(false);
	   jb[17].setEnabled(false);
	   jb[24].setEnabled(false);
	   
	    String bin=textField1.getText();
	    int intbin=Integer.parseInt(bin,jinzhi);
	    textField1.setText(convert.decBin(intbin));
        jinzhi=2;
	 //  textField1.setText(Integer.parseInt(textField1.getText(),2)+"");
   }
   }
   catch(Exception ee)
   {
	  JOptionPane.showMessageDialog(this,"转换格式不对\n请输入正确格式!","出错啦!",0); 
   }
   //对右边radiobutton的处理--------------------
   if(e.getSource()==item[8]||e.getSource()==jrb[4])
   {
	   item[8].setText("● 角度(E)");
	   item[9].setText("   弧度(R)");
	   item[10].setText("   梯度(G)");
	   jrb[4].setSelected(true);
	   degree=true;
	   radian=false;
	   grads=false;
   }
   if(e.getSource()==item[9]||e.getSource()==jrb[5])
   {
	   item[8].setText("   角度(E)");
	   item[9].setText("● 弧度(R)");
	   item[10].setText("   梯度(G)");
	   jrb[5].setSelected(true);
	   degree=false;
	   radian=true;
	   grads=false;
   }
   if(e.getSource()==item[10]||e.getSource()==jrb[6])
   {
	   item[8].setText("   角度(E)");
	   item[9].setText("   弧度(R)");
	   item[10].setText("● 梯度(G)");
	   jrb[6].setSelected(true);
	   degree=false;
	   radian=false;
	   grads=true;
   }
   //对右边第二组即非十进制的radiobotton的处理###############################
   if(e.getSource()==item[11]||e.getSource()==jrb[7])
   {
	   item[11].setText("● 四字(Q)");
	   item[12].setText("   DWORD(R)");
	   item[13].setText("   单字(W)");
	   item[14].setText("   字节(Y)");
	   jrb[7].setSelected(true);
   }
   if(e.getSource()==item[12]||e.getSource()==jrb[8])
   {
	   item[11].setText("   四字(Q)");
	   item[12].setText("● DWORD(R)");
	   item[13].setText("   单字(W)");
	   item[14].setText("   字节(Y)");
	   jrb[8].setSelected(true);
   }
   if(e.getSource()==item[13]||e.getSource()==jrb[9])
   {
	   item[11].setText("   四字(Q)");
	   item[12].setText("   DWORD(R)");
	   item[13].setText("● 单字(W)");
	   item[14].setText("   字节(Y)");
	   jrb[9].setSelected(true);
   }
   if(e.getSource()==item[14]||e.getSource()==jrb[10])
   {
	   item[11].setText("   四字(Q)");
	   item[12].setText("   DWORD(R)");
	   item[13].setText("   单字(W)");
	   item[14].setText("● 字节(Y)");
	   jrb[10].setSelected(true);
   }
   if(e.getSource()==item[15])
   {}         //暂时还不知道“数字分组”有什么用哈,,呵呵
   //帮助菜单------------------------------
   if(e.getSource()==item[16])
   {
	     String filePath = "C:/WINDOWS/Help/calc.chm";
	      try {
			Runtime.getRuntime().exec("cmd.exe /c "+filePath);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			System.out.println("打开系统帮助文档出错!");
			e1.printStackTrace();
		}
   }
   if(e.getSource()==item[17])
   {
	   JOptionPane.showMessageDialog(this,"Java计算器:\n09年情人节光棍版\n作者:快乐至上\n作者主页:\n http://user.qzone.qq.com/431284719","关于计算器",1); 
   }
   if(e.getSource()==item[18])
   {
	    try {
			Process p = Runtime.getRuntime().exec("explorer http://user.qzone.qq.com/431284719");
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			System.out.println("打开网页出错!");
			e1.printStackTrace();
		}
   }
   //--------------------------------------------------------------------按钮事件的处理-------------------------------------------------------------------------------------

   //退格jb[25]-------------------------
   if(e.getSource()==jb[25])
   {
	   if(textField1.getText().equals("0.")==false)//如果输入框中为“0.”则退格键无效
	   {
	       String s=textField1.getText();	   
	       if(s.length()==1)                  //当输入框中只有一个数时直接归为“0.”
		   textField1.setText("0.");
	      else
	      {
	      textField1.setText("");
	        for(int i = 0;i<s.length()-1;i++)
	        {

⌨️ 快捷键说明

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