Canvas及其支持的按键事件测试小例

类别:Java 点击:0 评论:0 推荐:

点了模拟器的Select键,然后上下左右调整就可以选开始画一个立体的按钮.再点一下Select键,上下左右键就可以控制按钮的移动了.

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Ticker;
/*
 * Created on 2005-1-29
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author jeremy chow
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class FullCanvasTest extends Canvas implements CommandListener
{
    protected boolean pressed, drew;
    int x = 50 ; int y = 50; int w = 1; int h = 1; int length = 5;
    /**
     *
     */
    public FullCanvasTest()
    {
//        super();
        // TODO Auto-generated constructor stub
//        setTitle();
        pressed = false;
        drew  = false;
       
        setTitle("全屏幕测试");
        setTicker(new Ticker("跑马灯"));
       
        addCommand(new Command("全屏幕",Command.SCREEN,1));
        addCommand(new Command("正常",Command.SCREEN,1));
        setCommandListener(this);
    }

    /* (non-Javadoc)
     * @see javax.microedition.lcdui.Displayable#paint(javax.microedition.lcdui.Graphics)
     */
    protected void paint(Graphics g)
    {
        // TODO Auto-generated method stub
        g.setColor(200,200,200);
        g.fillRect(0,0,getWidth(),getHeight());
        setFullScreenMode(true);
        paintButton(g, x, y , w, h,pressed);
        paintCross(g, x + w, y + h, length);

    }
   
    public void paintButton(Graphics g, int x, int y, int w, int h, boolean p)
    {
        if(!p)
        {
            g.setColor(255,255,255);
         g.fillRect(x-1, y-1, w, h);
            g.setColor(125, 125, 125);
         g.fillRect(x, y, w, h);
        }
        else
        {
            g.setColor(255,255,255);
         g.fillRect(x, y, w, h);
            g.setColor(125,125,125);
            g.fillRect(x-1, y-1, w, h);

        }  
    }
   
    public void paintCross(Graphics g, int x, int y, int length)
    {
        g.setColor(255,0,0);
        g.drawLine(x-length, y, x+length, y);
        g.drawLine(x, y-length, x , y+length);
    }
   
    /* (non-Javadoc)
     * @see javax.microedition.lcdui.CommandListener#commandAction(javax.microedition.lcdui.Command, javax.microedition.lcdui.Displayable)
     */
    public void commandAction(Command c, Displayable s)
    {
        // TODO Auto-generated method stub
        String cmd = c.getLabel();
        if(cmd.equals("全屏幕"))
        {
            setFullScreenMode(true);
        }
        else if(cmd.equals("正常"))
        {
            setFullScreenMode(false);
        }
    }
   
    protected void sizeChanged(int w, int h)
    {
        System.out.println("改变后的宽度:" + w);
        System.out.println("改变后的高度:" + h);
    }
   
    protected void hideNotify()
    {
        System.out.println("屏幕被系统遮蔽");
    }
   
    protected void showNotify()
    {
        System.out.println("屏幕显示在屏幕上");
    }
   
    protected void keyPressed(int keycode)
    {
        System.out.println("被下按的键值:" + getGameAction(keycode));
        switch(getGameAction(keycode))
        {
         case Canvas.UP :
             if(!drew) y = y - 2;
             else h = h - 2;
          break;
         case Canvas.DOWN :
             if(!drew) y = y + 2;
             else h = h + 2;
          break;
         case Canvas.LEFT :
             if(!drew)x = x - 2;
             else w = w - 2;
          break;
         case Canvas.RIGHT :
             if(!drew) x = x + 2;
             else w = w + 2;
          break;
         case Canvas.FIRE :
             pressed = true;
          break;
         default : break;
        }
//        pressed = true;
        repaint();
    }
   
    protected void keyReleased(int keycode)
    {
        System.out.println("被释放的键值:" + getGameAction(keycode));
        switch(getGameAction(keycode))
        { 
         case Canvas.FIRE :
             pressed = false;
          drew = !drew;
          break;
         default : break;       
        }
       
        repaint();
    }
}


import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
/*
 * Created on 2005-1-29
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author jeremy chow
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class CanvasTestMIDlet extends MIDlet
{
    protected Display display;
    /**
     *
     */
    public CanvasTestMIDlet()
    {
//        super();
        // TODO Auto-generated constructor stub
        display = Display.getDisplay(this);
    }

    /* (non-Javadoc)
     * @see javax.microedition.midlet.MIDlet#startApp()
     */
    protected void startApp() throws MIDletStateChangeException
    {
        // TODO Auto-generated method stub
        FullCanvasTest fc = new FullCanvasTest();
        display.setCurrent(fc);
    }

    /* (non-Javadoc)
     * @see javax.microedition.midlet.MIDlet#pauseApp()
     */
    protected void pauseApp()
    {
        // TODO Auto-generated method stub

    }

    /* (non-Javadoc)
     * @see javax.microedition.midlet.MIDlet#destroyApp(boolean)
     */
    protected void destroyApp(boolean arg0) throws MIDletStateChangeException
    {
        // TODO Auto-generated method stub

    }

}






本文地址:http://com.8s8s.com/it/it11633.htm