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

📄 mulcalculator.java

📁 多功能计算器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		jpanel[1].add(charButton[7]);
		jpanel[1].add(funButton[3]);
		jpanel[1].add(funButton[4]);		

		Container ct=getContentPane();
		ct.setLayout(new GridLayout(2,1));
		ct.add(jpanel[0]);
		ct.add(jpanel[1]);
		init=false;		
		setSize(350,400);
		setVisible(true);
	}
	
	public void actionPerformed(ActionEvent evt) //事件监听器
	{
		if(evt.getSource()==copyItem)
		{
			copystr=printText.getText();
		}
		if(evt.getSource()==pasteItem)
		{
			if(copystr!="")
				printText.setText(copystr);
		}
		if(evt.getSource()==aboutCal)
		{
			String about="功能:加、减、乘、除四则运算\n" +
									 "         二、八、十、十六进制转换\n" +
									 "作者:刘 俊\n\n" +
									 "                    2007.12.28";
			JOptionPane.showMessageDialog(null,about);
		}
		if(evt.getSource()==funButton[6])
		{ //按下CE键,清0
			values=0;
			funflag=-1;
			numenable=false;
			sign=false;
			executeable=false;
			funcount=0;			
			printText.setText("0");
		}
		if(evt.getSource()==funButton[5])
		{ //退格键
			String bsstr="";
			if(funflag==-1 && !numenable)
			{ //如果在按“=”后退格,直接清0
				numenable=false;
				printText.setText("0");
			}
			else if((printText.getText()).charAt(0)!='-')
			{
				if((printText.getText()).length()>1)
				{
					for(int i=0;i<(printText.getText()).length()-1;i++)
						bsstr+=(printText.getText()).charAt(i);
					printText.setText(bsstr);
				}
				else
				{
					numenable=false;
					printText.setText("0");
				}
			}
			else
			{ //如果有符号,退到第2位置0
				if((printText.getText()).length()>2)
				{
					for(int i=0;i<(printText.getText()).length()-1;i++)
						bsstr+=(printText.getText()).charAt(i);
					printText.setText(bsstr);
				}
				else
				{
					numenable=false;
					printText.setText("0");
				}
			}
		}
		if(evt.getSource()==charButton[7])
		{ //按“+/-”号
			if(Double.parseDouble(printText.getText())!=0)
			{
				buf=printText.getText();
				String str="";
				if(buf.charAt(0)=='-')
					for(int i=1;i<buf.length();i++)
						str+=buf.charAt(i);
				else
				{
					str+='-';
					str+=buf;
				}
				values=Double.parseDouble(str);
				printText.setText(str);
			}
		}
		for(int i=0;i<6;i++)
		{ //按“A、B、C、D、E、F”
			if(evt.getSource()==charButton[i]) 
			{
				numenable=true;
				if((printText.getText()).charAt(0)=='0' && (printText.getText()).length()==1)
					printText.setText(Character.toString((char)(65+i)));
				else
					printText.setText(printText.getText()+(char)(65+i));
			}
		}
		for(int i=0;i<10;i++)
			if(evt.getSource()==numButton[i])
			{ //响应数字按键
				if(numenable) //数字键连续(未有功能键按下)
				{	if(sign)
					{
					if((printText.getText()).charAt(0)!='0')
							printText.setText(Integer.toString(i));
					else
						printText.setText(printText.getText()+Integer.toString(i));
					}
					else
					{
						printText.setText(printText.getText()+Integer.toString(i));
					}
				}
				else  //数字键重置(有功能键按下)
				{
					sign=false;
					funcount=0;
					printText.setText("0");
					printText.setText(Integer.toString(i));
					numenable=true;
					executeable=true;
				}
			}
			
		if(evt.getSource()==charButton[6] /*&& numenable*/)
		{ //小数点
			buf=printText.getText();
			for(int i=0;i<buf.length();i++)
			{
				if(buf.charAt(i)=='.')
				sign=true;
			}
			if(!sign)
			{
					printText.setText(printText.getText()+".");
			}
		}
		
		for(int i=0;i<5;i++)
		{ //功能键
			if(evt.getSource()==funButton[i])
			{
				executeable=true;
				funflag=(short)i;
				numenable=false;
				if(funcount>=1)
					perExecute=funflag;
				funcount++;
		  }
	   }
		
		if(executeable && funflag!=-1 && funcount==1)
		{ //执行功能
			execute();		
			perExecute=funflag;		
			funflag=-1;
		}			
		if(funflag==4)
		{ //等号处理
			values=Double.parseDouble(printText.getText());
			printText.setText(Double.toString(values));
			funflag=-1;
			perExecute=-1;
			numenable=false;
		}
	}
	private void execute()
	{ //执行运算
		double x=0;
		switch(perExecute)//perExecute
		{
			
			case 0:  //加法
									values+=Double.parseDouble(printText.getText());
									if(values>=0)
										x=values-(long)values;
									else
										x=(long)values-values;
									if((long)values==values || x<0.000000001)
					        	printText.setText(Long.toString((long)values));
					        else
					        	printText.setText(Double.toString(values));
					       break;
			case 1:  //减法
									values-=Double.parseDouble(printText.getText());
									if(values>=0)
										x=values-(long)values;
									else
										x=(long)values-values;
									if((long)values==values || x<0.000000001)
					        	printText.setText(Long.toString((long)values));
					        else
					        	printText.setText(Double.toString(values));
					        break;
			case 2:  //乘法
									values*=Double.parseDouble(printText.getText());
									if(values>=0)
										x=values-(long)values;
									else
										x=(long)values-values;
									if((long)values==values || x<0.000000001)
					        	printText.setText(Long.toString((long)values));
					        else
					        	printText.setText(Double.toString(values));
					        break;
			case 3:  //除法
									values/=Double.parseDouble(printText.getText());
									if(values>=0)
										x=values-(long)values;
									else
										x=(long)values-values;
									if((long)values==values || x<0.000000001)
					        	printText.setText(Long.toString((long)values));
					        else
					        	printText.setText(Double.toString(values));
					        break;
			default:values=Double.parseDouble(printText.getText());					
		}					
	}
	
	private void radioselect()
	{ //单选按钮选择
		if(radiosel==0)
		{
			for(int i=0;i<8;i++)
				charButton[i].setEnabled(false);
			for(int i=0;i<5;i++)
				funButton[i].setEnabled(false);
			numButton[0].setEnabled(true);
			numButton[1].setEnabled(true);
			for(int i=2;i<10;i++)
				numButton[i].setEnabled(false);
		}
		if(radiosel==1)
		{
			for(int i=0;i<6;i++)
				charButton[i].setEnabled(false);
			for(int i=6;i<8;i++)
				charButton[i].setEnabled(true);
			for(int i=0;i<10;i++)
				numButton[i].setEnabled(true);
			for(int i=0;i<6;i++)
				funButton[i].setEnabled(true);
		}
		if(radiosel==2)
		{
			for(int i=0;i<8;i++)
				charButton[i].setEnabled(false);
			for(int i=0;i<5;i++)
				funButton[i].setEnabled(false);
			numButton[9].setEnabled(false);
			numButton[8].setEnabled(false);
			for(int i=0;i<8;i++)
				numButton[i].setEnabled(true);
		}
		if(radiosel==3)
		{
			for(int i=0;i<6;i++)
				charButton[i].setEnabled(true);
			charButton[6].setEnabled(false);
			charButton[7].setEnabled(false);
			for(int i=0;i<10;i++)
				numButton[i].setEnabled(true);
			for(int i=0;i<5;i++)
				funButton[i].setEnabled(false);
		}
	}
	public void itemStateChanged(ItemEvent evt)
	{ //单选按钮事件响应接口
		for(int i=0;i<4;i++)
			if(evt.getSource()==numKindRadio[i]
				 && evt.getStateChange()==ItemEvent.SELECTED 
				 && !init)
			{
				String longbuf="";
				//去掉负号、小数取整
				for(int k=0;k<(printText.getText()).length();k++)
				{
					if((printText.getText()).charAt(k)=='-')
							continue;
					if((printText.getText()).charAt(k)!='.')
						longbuf+=(printText.getText()).charAt(k);
					else
						break;
				}
				if(radiosel==0 && i==1)
					printText.setText(numerChange.btod(longbuf));
				if(radiosel==0 && i==2)
					printText.setText(numerChange.btoo(longbuf));
				if(radiosel==0 && i==3)
					printText.setText(numerChange.btoh(longbuf));
				if(radiosel==1 && i==0)
					printText.setText(numerChange.dtob(longbuf));
				if(radiosel==1 && i==2)
					printText.setText(numerChange.dtoo(longbuf));
				if(radiosel==1 && i==3)
					printText.setText(numerChange.dtoh(longbuf));
				if(radiosel==2 && i==0)
					printText.setText(numerChange.otob(longbuf));
				if(radiosel==2 && i==1)
					printText.setText(numerChange.otod(longbuf));
				if(radiosel==2 && i==3)
					printText.setText(numerChange.otoh(longbuf));
				if(radiosel==3 && i==0)
					printText.setText(numerChange.htob(longbuf));
				if(radiosel==3 && i==1)
					printText.setText(numerChange.htod(longbuf));
				if(radiosel==3 && i==2)
					printText.setText(numerChange.htoo(longbuf));
				radiosel=(short)i;
				radioselect();
			}
	}
	public static void main(String[] args)
	{ //程序入口
		MulCalculator app=new MulCalculator();
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

⌨️ 快捷键说明

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