public class NineMidlet extends MIDlet {
private myCanvas mycanvas;
private showImage showimg;
private Display dis;
public void startApp() {
dis = Display.getDisplay(this);
mycanvas = new myCanvas();
showimg = new showImage(this);
mycanvas.setTitle("九宫格");
showinterface("mycanvas");
}
public void showinterface(String name){
if(name.equals("mycanvas"))
dis.setCurrent(mycanvas);
else if (name.equals("showimg"))
dis.setCurrent(showimg);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public class myCanvas extends Canvas {
public int eachX,eachY ,distanceX,distanceY;
private Image[] img = new Image[9];
private int focus = 4;
public myCanvas(){
eachX = this.getWidth()/3;
eachY = this.getHeight()/3-4;
distanceX = eachX /2 ;
distanceY = eachY /2 ;
try{
for(int k = 0; k < 9; k++)
// int k = 2 ;
img[k] = Image.createImage("/img"+k+".png");
}catch(Exception ex){
ex.printStackTrace();
}
}
public void paint( Graphics g ) {
g.setColor(255,255,255);
g.fillRect(0 ,0 ,this.getWidth() , this.getHeight());
g.setColor(93, 170, 93);
drawBack(focus,g);
for( int i = 0 ; i< 3 ; i++)
for(int j = 0 ; j < 3 ; j ++){
g.drawImage( img[i*3+j], j*eachX+ distanceX , i*eachY + distanceY, Graphics.HCENTER|Graphics.VCENTER) ;
}
}
protected void keyPressed( int keyCode ){
int action = this.getGameAction(keyCode);
if ( Canvas.UP ==action ){
if( focus-3 >= 0)
focus = focus - 3;
else focus = focus +6;
}
else if ( Canvas.DOWN == action ){
if( focus+3 <= 8)
focus = focus +3;
else focus = focus -6 ;
}
else if ( Canvas.LEFT == action ){
if( focus-1 >= 0)
focus = focus-1;
else focus = focus +2 ;
}
else if ( Canvas.RIGHT == action ){
if( focus+1 <= 8)
++focus;
else focus = focus -2 ;
}
else if ( Canvas.FIRE == action ){
showinterface("showimg");
}
repaint();
}
protected void keyRepeated( int keyCode ){
System.out.println("!!!!!!!!!!!!!!!!!!!!!!");
int action = this.getGameAction(keyCode);
if ( Canvas.UP ==action ){
if( focus-3 >= 0)
focus = focus - 3;
else focus = focus +6;
}
else if ( Canvas.DOWN == action ){
if( focus+3 <= 8)
focus = focus +3;
else focus = focus -6 ;
}
else if ( Canvas.LEFT == action ){
if( focus-1 >= 0)
focus = focus-1;
else focus = focus +2 ;
}
else if ( Canvas.RIGHT == action ){
if( focus+1 <= 8)
++focus;
else focus = focus -2 ;
}
repaint();
}
public void drawBack(int focusTemp ,Graphics gr) {
switch(focusTemp){
case(0):
case(1):
case(2):
gr.fillRect(focusTemp*eachX, 0 , eachX , eachY);
break;
case(3):
case(4):
case(5):
gr.fillRect(focusTemp%3*eachX, eachY , eachX , eachY);
break;
case(6):
case(7):
case(8):
gr.fillRect(focusTemp%3*eachX, 2*eachY , eachX , eachY);
break;
}
}
}
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
public class showImage extends Canvas implements CommandListener{
private Image img9 = null;
private Command backCom ;
private NineMidlet mid;
/** Creates a new instance of showImage */
public showImage( NineMidlet mid) {
this.mid = mid;
backCom = new Command("Back", Command.BACK, 1);
this.addCommand(backCom);
try{
img9 = Image.createImage("/img9.png");
}catch(Exception ex){
ex.printStackTrace();
}
this.setCommandListener(this);
}
public void paint(Graphics g){
g.setColor(255,255,255);
g.fillRect(0 ,0 ,this.getWidth() , this.getHeight());
g.drawImage( img9, this.getWidth()/2 , this.getHeight()/2 , Graphics.HCENTER|Graphics.VCENTER) ;
}
protected void keyPressed( int keyCode ){
int action = this.getGameAction(keyCode);
}
public void commandAction(Command c, Displayable s) {
if (c == backCom)
mid.showinterface("mycanvas");
}
}