?? n800calculator2.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 + -