WEB开发网
开发学院软件开发Java Canvas及其支持的按键事件测试小例 阅读

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

 2007-12-23 12:27:52 来源:WEB开发网   
核心提示:点了模拟器的Select键,然后上下左右调整就可以选开始画一个立体的按钮.再点一下Select键,上下左右键就可以控制按钮的移动了.import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Command;import javax.mi

  点了模拟器的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://www.cncms.com)


Tags:Canvas 及其 支持

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接