J2ME学习笔记(五)-----MIDlets中GUI(图形)编程

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

MIDletsMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">中GUI(MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">图形)MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">编程 MEspace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.MEs New Roman'">  MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">概述

MIDPMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">为运行在MIDPMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">容器中的MIDPMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">应用定义了一个APIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">,此APIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">本身是建立在CLDC APIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">之上的。MIDPMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">用户接口APIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">的JavaMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类设计不是基于Java Abstract Window Toolkit(AWT)MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类的,而是为移动电话这类小型移动信息设备特别设计的。这类设备只有有限的屏幕尺寸和键盘性能。当程序员采用MIDPMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">编写图形应用时,他们只能使用MIDPMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">或CLDC APIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">。

 

2.MEs New Roman'">  MIDP GUIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类

1MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">)所有MIDP GUIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类都是javax.microedition.lcduiMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">包的组成部分。

2MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">)MIDPMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">用户接口的基本抽象图形是屏幕,ScreenMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类对面向设备的图形和用户交互进行了封装。每次应用只能显示一个屏幕。

3MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">)MIDP APIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">具有MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">高级(high-level)”MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">和MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">低级(low-level)”UIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类。

   MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">高级UI-----MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">例如Form,List,TextBox,TextField,AlertMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">和TickerMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">具有设备适配功能,它对图象,文本,文本域以及单选按钮等进行支持。

   MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">低级UI-----MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">例如CanvasMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类允许操作者任意绘画。

 

3.MEs New Roman'">  MIDP GUIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">中主要的类

1)MEs New Roman'">  GraphicsMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类-----MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">提供了用来绘画2DMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">几何对象的GraphicsMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">对象。

javax.microedition.lcdui.GraphicsMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">不是在MIDletMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">中显式创建的,MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">表示抽象画面的CanvasMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类在MIDP GUIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">编程中提供了paint()MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">方法,piant()MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">方法取类型为GraphicsMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">的一个参数,MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">用此参数实现MIDletMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">中GraphicsMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类的功能。

2)  DisplayableMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类-----MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">是一个抽象类 ,DisplayableMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">对象处理MIDletMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">的GUIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">输出.MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">它有两个派生类javax.microedition.lcdui.CanvasMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">和javax.microedition.lcdui.ScreenMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">。

3)MEs New Roman'">        CanvasMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类-----CanvasMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类允许操作者任意绘画,MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">与GraphicsMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类都是低级UI.MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">由GraphicsMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类类提供的方法总是在CanvasMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类的派生类中使用的。

4)MEs New Roman'">        ScreenMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类-----MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">是高级UIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">,FormMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">,ListMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">,TextBoxMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">,AlertMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类都是它的派生类。

 

4.MEs New Roman'">  MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">下面是GraphicsMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类用法的一段代码:

 

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)

       {

//MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">创建字体对象

              Font font=Font.getFont   

                   (Font.FACE_SYSTEM,Font.STYLE_BOLD,Font.SIZE_MEDIUM);

//MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">设定字体对象             

               g.setFont(font);

//MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">绘画出文本

              g.drawString("Hello MIDP",getWidth()/2,getHeight  ()/2,Graphics.HCENTER|Graphics.TOP);

              try

              {

//MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">绘画出图像

                     Image image=Image.createImage("myimage.png");

                     g.drawImage(image,0,0,Graphics.HCENTER|Graphics.TOP);

              }

              catch(Exception e)

              {

              }    

       }

}

----------------------------MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">运行效果就是在屏幕的中心显示文本”Hello MIDP”MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">。

 

 

 

5.MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">用MIDletMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">编程来实现SaveMyMoneyMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">银行应用的不同图形用户界面实例代码:

1)MEs New Roman'">      MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">任务陈述:第一屏幕显示包含名为Balance Enquiry(MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">当前余额)MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">,Fixed Deposit Enquiry(MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">定期储蓄)MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">,Check Status Enquiry(MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">支票状况)MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">项的菜单

MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">当用户选择Balance EnquiryMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">应显示进度指示器

MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">当用户选择Fixed Deposit EnquiryMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">应显示进度指示器

MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">当用户选择Check Status EnquiryMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">应显示打入支票号的TextBox

MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">当用户打入支票号后应显示进度指示器

2MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">.代码如下:

// MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">导入lcduiMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">和MidletMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">包

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

 

// MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">定义扩展MidpGUIMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类的MIDletMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类

public class MidpGUI extends MIDlet impleMEnts CommandListener

{

// MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">由DisplayMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类创建显示管理器

     Display display;

 

// MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">定义窗体对象 

     Form form = new Form("Container Form");

 

// ScreenMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类派生的

// MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">定义列表(MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">主菜单)

    List MEnu;

// MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">定义文本框 

    TextBox input;

 

// ItemMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类的组件 (GaugeMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类表示显示屏幕上的一个条形图)

   Gauge gauge = new Gauge("Your enquiry is being processed", false, 100, 30);

 

// MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">定义来自CommandMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">类的命令

   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; // MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">定义串变量以标识当前的窗体名

 

   public MidpGUI()

  {

  }

/**

 * The startApp() starts the MIDlet, creates a list of items and

 * Uses the EXIT command */

   public void startApp() throws MIDletstateChangeException

  {

// MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">得到displayMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">对象

     display = Display.getDisplay(this);

// MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">创建初始菜单并加入项

     MEnu = new List("Enquiries", Choice.IMPLICIT);

     MEnu.append("Current Balance ", null);

     MEnu.append("Fixed Deposit ", null);

     MEnu.append("Check Status ", null);

// MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">加入ExitMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">命令到窗体

     MEnu.addCommand(exitCommand);

     MEnu.setCommandListener(this);

// MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">调用mainMEnuMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">方法,设置初始屏幕

     mainMEnu();  

  // MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">加入计量组件到窗体

     form.append(gauge);

}

// mainMEnu MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">方法

void mainMEnu()

{

  display.setCurrent(MEnu);

  currentMEnu = "Main";

}

public void pauseApp() {

  form = null;

  display = null;

  MEnu = null;

  input = null;

  gauge = null;

}

// MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">当MIDletMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">被撤消是调用

public void destroyApp(boolean unconditional) throws MIDletstateChangeException

{

  notifyDestroyed();

}

//MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">显示TextBoxMEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">组件

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";

}

 

//MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">显示进度指示器屏幕

public void showForm()

{

  form.addCommand(backCommand);

  form.setCommandListener(this);

  display.setCurrent(form);

  currentMEnu = "form";

}

 

//MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">命令激活

public void commandAction(Command c, Displayable d)

{

  String label = c.getLabel();

  if (label.equals("Exit"))

  {

                try{

     destroyApp(true);}

                catch (Exception e){}

  }

  else if (label.equals("Back"))

  {

        if(currentMEnu.equals("input") || currentMEnu.equals("form"))

                     {

          // go back to MEnu

                        mainMEnu();

            }

 

  }

  else

  {

                if (label.equals("OK"))

                {

                                showForm();

                }

    else

    {

                        List down = (List)display.getCurrent();

            switch(down.getSelectedIndex())

                                     {

                                                      case 0: showForm();break;

                             case 1: showForm();break;

                             case 2: showTextBox();break;

                                     }

                     }

                }

  }

}

MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">注:所有类及方法的说明可以查看J2ME doc.MEs New Roman'; mso-hansi-font-family: 'TiMEs New Roman'">路径为x:WTK104docsapi

 

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值