J2ME学习笔记(5)—MIDlets中的图形编程

2016-02-19 13:36 6 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐J2ME学习笔记(5)—MIDlets中的图形编程,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - 编程语言 】

1.概述
  MIDP为运行在MIDP容器中的MIDP应用定义了一个API,此API本身是建立在CLDC API之上的。MIDP用户接口API的Java类设计不是基于Java Abstract Window Toolkit(AWT)类的,而是为移动电话这类小型移动信息设备非凡设计的。这类设备只有有限的屏幕尺寸和键盘性能。当程序员采用MIDP编写图形应用时,他们只能使用MIDP或CLDC API。
  
  2.MIDP GUI类
  1)所有MIDP GUI类都是javax.microedition.lcdui包的组成部分。
  
  2)MIDP用户接口的基本抽象图形是屏幕,Screen类对面向设备的图形和用户交互进行了封装。每次应用只能显示一个屏幕。
  
  3)MIDP API具有”高级(high-level)”和”低级(low-level)”UI类。
  
  高级UI-----例如Form,List,TextBox,TextField,Alert和Ticker具有设备适配功能,它对图象,文本,文本域以及单选按钮等进行支持。
  
  低级UI-----例如Canvas类答应操作者任意绘画。
  
  3. MIDP GUI中主要的类
  1) Graphics类-----提供了用来绘画2D几何对象的Graphics对象。
  
  javax.microedition.lcdui.Graphics类不是在MIDlet中显式创建的,表示抽象画面的Canvas类在MIDP GUI编程中提供了paint()方法,piant()方法取类型为Graphics的一个参数,用此参数实现MIDlet中Graphics类的功能。
  
  2) Displayable类-----是一个抽象类 ,Displayable对象处理MIDlet的GUI输出.它有两个派生类javax.microedition.lcdui.Canvas和javax.microedition.lcdui.Screen。
  
  3)  Canvas类-----Canvas类答应操作者任意绘画,与Graphics类都是低级UI.由Graphics类类提供的方法总是在Canvas类的派生类中使用的。
  
  4)  Screen类-----是高级UI,Form,List,TextBox,Alert类都是它的派生类。
  
  4. 下面是Graphics类用法的一段代码
  import javax.microedition.midlet.*;
  
  import javax.microedition.lcdui.*;
  
  public class MidpGraphics extends MIDlet implements CommandListener
  
  {
    Display display;
  
    testCanvas canvas;
  
    public MidpGraphics()
  
    {
  
   display=Display.getDisplay(this);
  
   canvas=new testCanvas();
  
    }
  
    public void startApp() throws MIDletStateChangeException
  
   {
  
    display.setCurrent(canvas);
  
   }
  
  public void pauseApp()
  
  {
  
  }
  
  public void destroyApp(boolean unconditional) throws MIDletStateChangeException
  
    {
  
    }
  
  public void commandAction(Command c,Displayable d)
  
  {
  
  }
  
  }
  
  class testCanvas extends Canvas
  
  {
    public void paint(Graphics g)
  
    {
  
  //创建字体对象
  
   Font font=Font.getFont 
  
    (Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_MEDIUM);
  
  //设定字体对象   
  
    g.setFont(font);
  
  //绘画出文本
  
   g.drawString("Hello MIDP",getWidth()/2,getHeight ()/2,Graphics.HCENTERGraphics.TOP);
  
   try
  
   {
  
  //绘画出图像
  
   Image image=Image.createImage("myimage.png");
  
   g.drawImage(image,0,0,Graphics.HCENTERGraphics.TOP);
  
   }
  
   catch(Exception e)
  
   {
  
   }  
  
    }
  
  }
  
  运行效果就是在屏幕的中心显示文本”Hello MIDP”。
  
  5.用MIDlet编程来实现SaveMyMoney银行应用的不同图形用户界面实例代码:
  1) 任务陈述:第一屏幕显示包含名为Balance Enquiry(当前余额),Fixed Deposit Enquiry(定期储蓄),Check Status Enquiry(支票状况)项的菜单
  
  当用户选择Balance Enquiry应显示进度指示器
  
  当用户选择Fixed Deposit Enquiry应显示进度指示器
  
  当用户选择Check Status Enquiry应显示打入支票号的TextBox
  
  当用户打入支票号后应显示进度指示器
  
  2.代码如下:
  
  // 导入lcdui和Midlet包
  
  import javax.microedition.lcdui.*;
  
  import javax.microedition.midlet.*;
  
  // 定义扩展MidpGui类的MIDlet类
  
  public class MidpGui extends MIDlet implements CommandListener
  
  {
  
  // 由Display类创建显示治理器
  
   Display display;
  
  // 定义窗体对象 
  
   Form form = new Form("Container Form");
  
  // Screen类派生的
  
  // 定义列表(主菜单)
  
  List menu;
  
  // 定义文本框 
  
  TextBox input;
  
  // Item类的组件 (Gauge类表示显示屏幕上的一个条形图)
  
    Gauge gauge = new Gauge("Your enquiry is being processed", false, 100, 30);
  
  // 定义来自Command类的命令
  
    static final Command okCommand = new Command("OK",Command.OK,1);
  
    static final Command backCommand = new Command("Back",Command.BACK,0);
  
    static final Command exitCommand = new Command("Exit", Command.STOP,2);
  
    String currentMenu; // 定义串变量以标识当前的窗体名
  
    public MidpGui()
  
   {
  
   }
  
  /**
  
   * The startApp() starts the MIDlet, creates a list of items and
  
   * Uses the EXIT command */
  
    public void startApp() throws MIDletStateChangeException
  
   {
  
  // 得到display对象
  
   display = Display.getDisplay(this);
  
  // 创建初始菜单并加入项
  
   menu = new List("Enquiries", Choice.IMPLICIT);
  
   menu.append("Current Balance ", null);
  
   menu.append("Fixed Deposit ", null);
  
   menu.append("Check Status ", null);
  
  // 加入Exit命令到窗体
  
   menu.addCommand(exitCommand);
  
   menu.setCommandListener(this);
  
  // 调用mainmenu方法,设置初始屏幕
  
   mainMenu(); 
  
   // 加入计量组件到窗体
  
   form.append(gauge);
  
  }
  
  // mainMenu 方法
  
  void mainMenu()
  
  {
  
   display.setCurrent(menu);
  
   currentMenu = "Main";
  
  }
  
  public void pauseApp() {
  
   form = null;
  
   display = null;
  
   menu = null;
  
   input = null;
  
   gauge = null;
  
  }
  
  // 当MIDlet被撤消是调用
  
  public void destroyApp(boolean unconditional) throws MIDletStateChangeException
  
  {
  
   notifyDestroyed();
  
  }
  
  //显示TextBox组件
  
  public void showTextBox()
  
  {
  
   input = new TextBox ("Enter the Check Number:", "", 20, TextField.ANY);
  
   input.addCommand(backCommand);
  
   input.addCommand(okCommand);
  
   input.setCommandListener(this);
  
   input.setString("");
  
   display.setCurrent(input);
  
   currentMenu = "input";
  
  }
  
  //显示进度指示器屏幕
  
  public void showForm()
  
  {
  
   form.addCommand(backCommand);
  
   form.setCommandListener(this);
  
   display.setCurrent(form);
  
   currentMenu = "form";
  
  }
  
  //命令激活
  
  public void commandAction(Command c, Displayable d)
  
  {
  
   String label = c.getLabel();
  
   if (label.equals("Exit"))
  
   {
  
  try{
  
   destroyApp(true);}
  
  catch (

来源:http://www.tulaoshi.com/n/20160219/1604768.html

延伸阅读
时间处理在程序开发中相当常见,下面对于时间处理做一个简单的说明。 一、时间的表达方式 时间在J2ME中有两种表达方式: 1、以和GMT1970年1月1号午夜12点和现在相差的毫秒数来代表 !-- frame contents -- !-- /frame contents -- 这种方式适合比较两个时间之间的差值。 2、以对...
1.首先需指出不同环境的三个Java平台: 1) Java 2标准版J2SE -----是工具和API的收集,主要用于创建Java Applets和单独的,基于Web的应用 2) Java 2企业版J2EE -----是对跨分布网络和远程访问的单个应用程序的企业级Java应答。J2EE包含J2SE的所有功能,着重于用企业Java Bean(EJB),Servlets和Java服务器页面(jsp),以及扩展标志语言(XML)...
J2ME编程是Java在智能家电领域的应用,主要包含以下技术: 1、 高级用户界面 高级用户界面是指J2ME编程中用到的Form(窗体)、TextBox(文本框)、List(列表框)和Alert(提示信息框)等的使用,以及其中的一些控件的使用,当然也包括相应的事件处理。应用在一般的如登陆窗体、关于窗体和提示等。 2、 低级用户界面 低级用户...
随着PDA和手机用户越来越倾向将自己信息存储在自己设备中。对于一个Java程序开发者来说,这意味着他必须学习怎么编写手机和PDA这些轻便设备的代码。近来一些研究表明Java在快速增长的手机和无线AD市场中占有重要地位。此外,到2004年将统治这些设备开发平台。 让我们看看J2ME的语言规格,通过这种方式你可能会对开发这种平台产生浓厚...
一、引言 最近有朋友推荐能否写一些有关J2ME编程方面的文章。心想最近正好有心把自己工作所学整理一下,那天又在网上看到有人询问这方面的教程,于是便答应了,既能把心中所学系统地归纳一下,也希望能给一起爱好和学习J2ME的朋友和同道们一点借鉴,只是不足之处,还望包涵包涵! 二、J2ME介绍 J2ME, 简称Java 2平台,袖珍...

经验教程

404

收藏

87
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部