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

📄 calculator.java

📁 java做的一个计算器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			String strTemp = CalUtil.calculate(OP_1, OP, OP_2);
			if (strTemp.length() == 4 && strTemp.startsWith("ERR")) {
				CalUtil.show_error_msg(txfDisplay, Integer.parseInt(strTemp
						.substring(3)));
				chrStates = 'E';
				return;
			} else {// calculated without error
				txfDisplay.setBufText(strTemp);
				Result = strTemp;
				IS_RESULT_EDITED = false;
				chrStates = 'R';
				return;
			}
		} else if (strActionCmd.equals("Back")) {// e: Back
			txfDisplay.backSpace(IS_OP2_EDITED);
		} else if (strActionCmd.equals("CE")) {// f: CE
			txfDisplay.setBufText("0");
			chrStates = 'C';
		} else if (strActionCmd.equals("C")) {// g: Reset
			Calculator.reset();
		} else if (strActionCmd.equals(".")) {// h: Dot
			if (NUMBER_HAS_DOT)
				return;
			else {// no dot
				txfDisplay.concatBufText(strActionCmd);
				NUMBER_HAS_DOT = true;
				IS_OP2_EDITED = true;
			}
		} else if (CalUtil.isMemOp(strActionCmd)) {
			char chrTemp = strActionCmd.charAt(1);
			switch (chrTemp) {
			case 'C':
				lblMem.memory_mc();
				break;
			case 'R':
				lblMem.memory_mr(txfDisplay);
				IS_OP2_EDITED = false;
				break;
			case 'S':
				lblMem.memory_ms(txfDisplay.getBufText());
				IS_OP2_EDITED = false;
				break;
			case '+':
				lblMem.memory_mp(txfDisplay.getBufText());
				IS_OP2_EDITED = false;
				break;
			default:
			}
		} else {
			return;
		}
	}

	public static void state_R_dispose(String strActionCmd) {
		chrStates = 'R';
		if (txfDisplay.getBufText().equals("0"))
			IS_RESULT_EDITED = false;
		if (txfDisplay.getBufText().indexOf(".") >= 0)
			NUMBER_HAS_DOT = true;
		else
			NUMBER_HAS_DOT = false;

		if (strActionCmd.length() == 1
				&& Character.isDigit(strActionCmd.charAt(0))) {// a: 0~9
			if (!IS_RESULT_EDITED) {// is not edited
				txfDisplay.setBufText(strActionCmd);
				IS_RESULT_EDITED = true;
			} else {
				txfDisplay.concatBufText(strActionCmd);
			}
		} else if (strActionCmd.equals(".")) {// h: Dot
			if (!IS_RESULT_EDITED) {
				txfDisplay.setBufText("0.");
				IS_RESULT_EDITED = true;
				NUMBER_HAS_DOT = true;
			} else if (IS_RESULT_EDITED && !NUMBER_HAS_DOT) {
				txfDisplay.concatBufText(strActionCmd);
				IS_RESULT_EDITED = true;
				NUMBER_HAS_DOT = true;
			}
		} else if (CalUtil.isOperator1(strActionCmd)) {// b: + - * /
			OP_1 = txfDisplay.getBufText();
			OP = strActionCmd;
			chrStates = 'B';
		} else if (CalUtil.isOperator2(strActionCmd)) {// c: operator2=>
													   // sqrt,%,+/-,1/x
			String strTemp = "";
			if (strActionCmd.equals("%")) {
				strTemp = CalUtil.calculate(Result, strActionCmd, txfDisplay
						.getBufText());
			} else {
				strTemp = CalUtil.calculate(txfDisplay.getBufText(),
						strActionCmd);
			}
			if (strTemp.length() == 4 && strTemp.startsWith("ERR")) {
				CalUtil.show_error_msg(txfDisplay, Integer.parseInt(strTemp
						.substring(3)));
				chrStates = 'E';
				return;
			} else {// calculated without error
				txfDisplay.setBufText(strTemp);
				OP_2 = strTemp;
				IS_RESULT_EDITED = false;
				return;
			}
		} else if (strActionCmd.equals("=")) {// d: =
			String strTemp = "";
			if (CalUtil.isOperator1(OP)) {
				strTemp = CalUtil.calculate(Result, OP, OP_2);
			} else if (CalUtil.isOperator2(OP)) {
				strTemp = CalUtil.calculate(Result, OP);
			}
			if (strTemp.length() == 4 && strTemp.startsWith("ERR")
					|| strTemp.equals("")) {
				CalUtil.show_error_msg(txfDisplay, Integer.parseInt(strTemp
						.substring(3)));
				chrStates = 'E';
				return;
			} else {// calculated without error
				txfDisplay.setBufText(strTemp);
				Result = strTemp;
				IS_RESULT_EDITED = false;
				return;
			}
		} else if (strActionCmd.equals("Back")) {// e: Back
			if (IS_RESULT_EDITED == true)
				txfDisplay.backSpace(IS_RESULT_EDITED);
		} else if (strActionCmd.equals("CE")) {// f: CE
			txfDisplay.setBufText("0");
		} else if (strActionCmd.equals("C")) {// g: Reset
			Calculator.reset();
		} else if (CalUtil.isMemOp(strActionCmd)) {
			char chrTemp = strActionCmd.charAt(1);
			switch (chrTemp) {
			case 'C':
				lblMem.memory_mc();
				break;
			case 'R':
				lblMem.memory_mr(txfDisplay);
				IS_RESULT_EDITED = false;
				break;
			case 'S':
				lblMem.memory_ms(txfDisplay.getBufText());
				IS_RESULT_EDITED = false;
				break;
			case '+':
				lblMem.memory_mp(txfDisplay.getBufText());
				IS_RESULT_EDITED = false;
				break;
			default:
			}
		}

	}

	public static void state_E_dispose(String strActionCmd) {
		chrStates = 'E';
		if (strActionCmd.equals("C") || strActionCmd.equals("CE")) {
			Calculator.reset();
			chrStates = 'A';
		}
	}

	class ButtonHandler implements ActionListener {
		public void actionPerformed(ActionEvent ae) {
			String strActionCmd = ae.getActionCommand().trim();

			switch (chrStates) {
			case 'A':
				state_A_dispose(strActionCmd);
				break;
			case 'B':
				state_B_dispose(strActionCmd);
				break;
			case 'C':
				state_C_dispose(strActionCmd);
				break;
			case 'R':
				state_R_dispose(strActionCmd);
				break;
			case 'E':
				state_E_dispose(strActionCmd);
				break;
			default:
			}
			if (!strActionCmd.equals("=")) {
				Zensousa = strActionCmd;
			}
		}
	}

	class KeyHandler implements KeyListener {
		public void keyTyped(KeyEvent ke) {
			char chrKey = ke.getKeyChar();
			String strActionCmd = String.valueOf(chrKey);
			if (chrKey == KeyEvent.VK_ENTER) {
				strActionCmd = "=";
			} else if (chrKey == KeyEvent.VK_DELETE) {
				strActionCmd = "C";
			} else if (chrKey == KeyEvent.VK_BACK_SPACE) {
				strActionCmd = "Back";
			}
			switch (chrStates) {
			case 'A':
				state_A_dispose(strActionCmd);
				break;
			case 'B':
				state_B_dispose(strActionCmd);
				break;
			case 'C':
				state_C_dispose(strActionCmd);
				break;
			case 'R':
				state_R_dispose(strActionCmd);
				break;
			case 'E':
				state_E_dispose(strActionCmd);
				break;
			default:
			}
		}

		public void keyPressed(KeyEvent ke) {
		}

		public void keyReleased(KeyEvent ke) {
		}
	}

	class WindowHandler implements WindowListener {
		public void windowOpened(WindowEvent we) {
		}

		public void windowIconified(WindowEvent we) {
		}

		public void windowDeiconified(WindowEvent we) {
		}

		public void windowClosing(WindowEvent we) {
			System.exit(0);
		}

		public void windowClosed(WindowEvent we) {
		}

		public void windowActivated(WindowEvent we) {
		}

		public void windowDeactivated(WindowEvent we) {
		}
	}

	class MenuItemHandler implements ItemListener, ActionListener,
			ClipboardOwner {
		/*
		 * (non-Javadoc)
		 * 
		 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
		 */
		//it is only used for checkBoxAction in this program
		public void itemStateChanged(ItemEvent ie) {
			JCheckBoxMenuItem target = (JCheckBoxMenuItem) ie.getSource();
			String strActionCmd = target.getActionCommand();
			if (strActionCmd.equals("Ketakugiru")) {
				KUGIRU = target.getState();
				txfDisplay.display();
			}
		}

		/*
		 * (non-Javadoc)
		 * 
		 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
		 */
		public void actionPerformed(ActionEvent ae) {
			if (chrStates == 'E')
				return;
			Clipboard clipboard = Toolkit.getDefaultToolkit()
					.getSystemClipboard();
			JMenuItem target = (JMenuItem) ae.getSource();
			String strActionCmd = target.getActionCommand();
			if (strActionCmd.equals("copy")) {// the copy operation
				String srcData = txfDisplay.getBufText();
				StringSelection contents = new StringSelection(srcData);
				clipboard.setContents(contents, this);
			} else if (strActionCmd.equals("paste")) {// the paste operation
				Transferable contents = clipboard.getContents(this);
				String dstData;
				if (contents == null)
					return;
				try {
					dstData = (String) contents
							.getTransferData(DataFlavor.stringFlavor);
				} catch (Exception e) {// invalid data
					CalUtil.show_error_msg(txfDisplay, 3);
					chrStates = 'E';
					return;
				}
				get_number_and_paste(dstData);
			} else if (strActionCmd.equals("typecomm")) {
				return;
			} else if (strActionCmd.equals("typefunc")) {
				return;
			} else if (strActionCmd.equals("version")) {
				Object[] options = { "OK" };
				JOptionPane.showOptionDialog(null, CalUtil.Help_VerDialog_Info,
						CalUtil.Help_VerDialog_Title,
						JOptionPane.DEFAULT_OPTION,
						JOptionPane.INFORMATION_MESSAGE, null, //don't use a
															   // custom Icon
						options, //the titles of buttons
						options[0]); //default button title
			} else if (strActionCmd.equals("topic")) {
				Object[] options = { "OK" };
				JOptionPane.showOptionDialog(null,
						CalUtil.Help_TopicDialog_Info,
						CalUtil.Help_TopicDialog_Title,
						JOptionPane.DEFAULT_OPTION,
						JOptionPane.INFORMATION_MESSAGE, null, //don't use a
															   // custom Icon
						options, //the titles of buttons
						options[0]); //default button title

			}
		}

		public void get_number_and_paste(String dstData) {
			if (dstData == null || dstData.equals(""))
				return;
			String strNumTemp = "";
			boolean blnDotTemp = false;
			for (int i = 0; i < dstData.length(); i++) {//get the number
				if (Character.isDigit(dstData.charAt(i))) {
					strNumTemp += dstData.substring(i, i + 1);
				} else if (dstData.charAt(i) == '.' && blnDotTemp == false
						&& strNumTemp.length() != 0) {
					strNumTemp += ".";
					blnDotTemp = true;
				}//else
			}//for
			if (strNumTemp.equals("")) {//no data is number
				// Error dispose
				CalUtil.show_error_msg(txfDisplay, 3);
				chrStates = 'E';
				return;
			}
			// if the contents got is number, then paste
			txfDisplay.setBufText("");
			for (int i = 0; i < strNumTemp.length(); i++) {
				String strActionCmd = strNumTemp.substring(i, i + 1);
				switch (chrStates) {
				case 'A':
					state_A_dispose(strActionCmd);
					break;
				case 'B':
					state_B_dispose(strActionCmd);
					break;
				case 'C':
					state_C_dispose(strActionCmd);
					break;
				case 'R':
					state_R_dispose(strActionCmd);
					break;
				case 'E':
					state_E_dispose(strActionCmd);
					break;
				default:
				}
			}
		}

		//inherited method
		public void lostOwnership(Clipboard clipboard, Transferable contents) {
		}
	}//MenuItemHandler
}

⌨️ 快捷键说明

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