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

📄 n800calculator2.java

📁 NEC N800 Calculator
💻 JAVA
字号:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

/**********************************************
 * N800娙堈揹戩傾僾儕働乕僔儑儞
 * 丂掅儗儀儖API傪棙梡偟偨娙扨側揹戩傾僾儕働乕僔儑儞偱偡丅
 * 丂夋柺峔惉偼埲壓偺捠傝偱偡丅
 * 丂丒僞僀僩儖夋柺
 * 丂丒儊僀儞夋柺
 **********************************************/
public class N800Calculator2 extends MIDlet {

	private CalculatorCanvas canvas;
	private Display display;

	/**
	 * 僐儞僗僩儔僋僞
	 */
	public N800Calculator2() {
		display = Display.getDisplay(this);

		//僉儍儞僶僗傪惗惉
		canvas = new CalculatorCanvas(this);
	}

	/**
	 * 傾僾儕働乕僔儑儞奐巒帪偺張棟
	 */
	protected void startApp() throws MIDletStateChangeException {
		//夋柺偺昞帵
		display.setCurrent(canvas);
	}

	/**
	 * 傾僾儕働乕僔儑儞廔椆帪偺張棟
	 */
	protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

	}

	/** 
	 * 拝怣帪偺張棟
	 */
	protected void pauseApp() {
	}
}

/******************************************
 * 揹戩僉儍儞僶僗
 * 忬懺曄悢偵傛傝俀偮偺夋柺傪昞偟偰偄傑偡丅
 * 丂丒僞僀僩儖夋柺
 * 丂丒揹戩夋柺
 ******************************************/
class CalculatorCanvas extends Canvas implements CommandListener {

	/**************************
	 * 掕悢
	 **************************/
	private final int STATE_TITLE = 0; //僞僀僩儖夋柺
	private final int STATE_MAIN = 1; //揹戩夋柺

	/**************************
	 * 僀儞僗僞儞僗曄悢
	 **************************/
	private MIDlet midlet;
	private String numString = "0";
	private String operatorString = "";
	private int tmp = 0;
	private Command clear;
	private Command exit;
	private int operator = 4; //慖戰偟偨墘嶼巕傪曐帩偡傞乮0=+ 1=- 2=* 3=/)
	private boolean clearFlag = true;
	private Image keyImg;
	private Image titleImg;

	private int state; //忬懺

	/**************************
	 * 僐儞僗僩儔僋僞
	 **************************/
	public CalculatorCanvas(MIDlet midlet) {
		this.midlet = midlet;

		//夋憸傪撉傒崬傓
		try {
			keyImg = Image.createImage("/button.png");
			titleImg = Image.createImage("/title.png");
		} catch (Exception e) {
			e.printStackTrace();
		}

		//僋儕傾僐儅儞僪偺攝抲
		clear = new Command("CLEAR", Command.OK, 1);
		addCommand(clear);
		exit = new Command("EXIT", Command.EXIT, 1);
		addCommand(exit);

		setCommandListener(this);
	}

	/**************************
	 * 昤夋儊僜僢僪
	 **************************/
	protected void paint(Graphics g) {
		//攚宨傪愝掕偡傞
		g.setColor(237, 237, 211);
		g.fillRect(0, 0, getWidth(), getHeight());

		//忬懺曄悢偵傛傝夋柺傪敾暿
		if (state == STATE_TITLE) { //僞僀僩儖夋柺
			//僞僀僩儖夋憸傪昞帵
			g.drawImage(titleImg, 0, 0, Graphics.LEFT | Graphics.TOP);

			//儊僢僙乕僕傪昞帵
			g.setColor(0, 0, 0);
			g.drawString(
				"Press Any Key!!",
				30,
				140,
				Graphics.LEFT | Graphics.TOP);

		} else { //儊僀儞夋柺
			//僉乕傪昞帵偡傞
			g.drawImage(keyImg, 0, 35, Graphics.LEFT | Graphics.TOP);

			//悢帤昞帵僨傿僗僾儗僀
			g.setColor(0, 0, 0);
			g.drawRect(11, 10, 140, 20);
			g.setColor(255, 255, 255);
			g.fillRect(11, 10, 140, 20);

			//悢帤偺昤夋
			g.setColor(0, 0, 0);
			g.drawString(numString, 150, 30, Graphics.RIGHT | Graphics.BOTTOM);

			//墘嶼巕偺昤夋
			g.drawString(
				operatorString,
				160,
				35,
				Graphics.RIGHT | Graphics.BOTTOM);

		}

	}

	/*****************************
	 * 僀儀儞僩娭楢張棟
	 *****************************/
	/**
	 * 僉乕僀儀儞僩張棟
	 */
	public void keyPressed(int keycode) {
		//忬懺偵傛傝
		if (state == STATE_TITLE) { //僞僀僩儖夋柺昞帵帪側傜
			//忬懺傪曄峏
			state = STATE_MAIN;
		} else { //儊僀儞夋柺側傜
			switch (getGameAction(keycode)) {
				case Canvas.DOWN : //妱傝嶼
					calculate();
					operator = 3;
					operatorString = "/";
					clearFlag = true;
					break;
				case Canvas.UP : //妡偗嶼
					calculate();
					operator = 2;
					operatorString = "*";
					clearFlag = true;
					break;
				case Canvas.LEFT : //懌偟嶼
					calculate();
					operator = 0;
					operatorString = "+";
					clearFlag = true;
					break;
				case Canvas.RIGHT : //堷偒嶼
					calculate();
					operator = 1;
					operatorString = "-";
					clearFlag = true;
					break;
				case Canvas.FIRE :
					calculate();
					operator = 4;
					operatorString = "";
					clearFlag = true;
					break;
				default :
					break;
			}
		}

		//悢帤偺擖椡
		if (keycode >= 48 && keycode <= 57 ) {
			if (clearFlag) {
				numString = "";
				if (keycode == 48) {
					clearFlag = true;
				} else {
					clearFlag = false;
				}
			}
			numString += getKeyName(keycode);
		}
		
		repaint();
	}

	/**
	 * 僐儅儞僪僀儀儞僩張棟
	 */
	public void commandAction(Command command, Displayable displayable) {
		if (command == clear) { //僋儕傾僐儅儞僪側傜
			//弶婜壔偡傞
			tmp = 0;
			numString = "0";
			operatorString = "";
			clearFlag = true;
			repaint();
		}
		if (command == exit) { //exit僐儅儞僪側傜
			//傾僾儕働乕僔儑儞傪廔椆偡傞
			try {
				((N800Calculator2) midlet).destroyApp(true);
			} catch (Exception e) {
			}
			((N800Calculator2) midlet).notifyDestroyed();
		}
	}

	/*************************************
	 * 慖戰偝傟偨墘嶼巕偵婎偯偒寁嶼偡傞
	 *************************************/
	public void calculate() {
		try {
			int num = Integer.parseInt(numString); //擖椡偝傟偨抣傪庢摼

			//寁嶼偡傞
			switch (operator) {
				case 0 : //懌偟嶼
					tmp = tmp + num;
					break;
				case 1 : //堷偒嶼
					tmp = tmp - num;
					break;
				case 2 : //妡偗嶼
					tmp = tmp * num;
					break;
				case 3 : //妱傝嶼
					tmp = tmp / num;
					break;
				default : //"="偑慖戰偝傟偰偄傞偲偒
					tmp = num; //擖椡偝傟偨抣傪偦偺傑傑
					break;
			}
		} catch (Exception e) {//椺奜偑敪惗偟偨傜
			tmp = 0;
			e.printStackTrace();
		}
		numString = String.valueOf(tmp);
	}
}

⌨️ 快捷键说明

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