MIDP高级UI的使用(三)TextBox

当我们需要再移动设备上输入数据时,TextBox 就派上用场了,我们使用的TextBox 构造函数参数共有四个,TextBox textbox = new TextBox(string title, string content, string maxLength, string limitType) ,第一个是标题,第二个是TextBox 的初始内容,第三个是允许输入字符的最大长度,第四个是限制内型。值得注意的是:一个TextBox 必须附加一个命令,否则用户将不能激发任何行为,而陷入这个TextBox 中。

下面是一个常见的TextBox 的例子。

view plainprint?
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.thinkrace.TextBox;
import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.ChoiceGroup;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import javax.microedition.lcdui.Ticker;
import javax.microedition.midlet.*;
/**
 * @author pengjw
 */
public class TextBoxDemo extends MIDlet implements CommandListener{
  private Display display;
  private ChoiceGroup types;
  private ChoiceGroup options;
  private Form mainForm;
  private static final Command CMD_EXIT = new Command("Exit", Command.EXIT, 1);
  private static final Command CMD_BACK = new Command("Back", Command.BACK, 1);
  private static final Command CMD_SHOW = new Command("Show", Command.SCREEN ,1);
  private static final String[] textBoxLabels ={
    "Any Character", "Email", "Number", "Decimal", "Phone", "URL"
  };
  private static final int[] textBoxTypes ={
    TextField.ANY, TextField.EMAILADDR, TextField.NUMERIC,
    TextField.DECIMAL, TextField.PHONENUMBER, TextField.URL
  };
  //firstTime用来判断TextBoxDemo是否被实例化 
  private boolean firstTime;
  public TextBoxDemo(){
    /**
     * 来自文档的说明 
     * Display represents the manager of the display and input devices of the system. 
     * It includes methods for retrieving properties of the device and for requesting that objects be displayed on the device. 
     * There is exactly one instance of Display per MIDlet and the application can get 
     * a reference to that instance by calling the getDisplay() method. 
     */
    display = Display.getDisplay(this);
    firstTime = true;
  }
  public void startApp() {
    if(firstTime){
      mainForm = new Form("Select a Text Box Type");
      mainForm.append("select a textbox type");
      types = new ChoiceGroup("Choice Type", Choice.EXCLUSIVE, textBoxLabels, null);
      mainForm.append(types);
      String[] optionStrings = {"As Password", "Show Ticker"};
      options = new ChoiceGroup("Options", Choice.MULTIPLE, optionStrings, null);
      mainForm.append(options);
      mainForm.addCommand(CMD_EXIT);
      mainForm.addCommand(CMD_SHOW);
      mainForm.setCommandListener(this);
      firstTime = false;
    }
    //设置当前显示的窗体
    display.setCurrent(mainForm);
  }
  public void pauseApp() {
  }
  public void destroyApp(boolean unconditional) {
  }
  /**
   * 实现CommandListener接口的抽象方法
   * 根据不同的Command做不同的事情
   */
  public void commandAction(Command c, Displayable d) {
    if(c == CMD_EXIT){
      destroyApp(false);
      notifyDestroyed();
    }
    else if(c == CMD_SHOW){
      int Index = types.getSelectedIndex();
      String title = textBoxLabels[Index];
      int choiceType = textBoxTypes[Index];
      boolean[] flags = new boolean[2];
      /** 
       * 来自文档的说明,这个方法可以给一个bool数组赋值 
       * Query the state of a choicegroup and renturns the state of all elements in the boolean array. 
       */
      options.getSelectedFlags(flags);
      if(flags[0]){
        choiceType = TextField.PASSWORD;
      }
      TextBox textBox = new TextBox(title,"",50,choiceType);
      if(flags[1]){
        textBox.setTicker(new Ticker("TextBox:" + title));
      }
      textBox.addCommand(CMD_BACK);
      textBox.setCommandListener(this);
      display.setCurrent(textBox);
    }
    else if(c == CMD_BACK){
      display.setCurrent(mainForm);
    }
  }
} 

时间: 2024-11-29 23:51:37

MIDP高级UI的使用(三)TextBox的相关文章

MIDP高级UI的使用(一)LCDUI包的体系结构

首先看看整个LCDUI包的体系结构图: Screen 类属于高级图形用户界面组件,Canvas是低级图形用户界面组件,在同一时刻,只能有唯一一个Screen或者Canvas类的子类显示在屏幕上,我们可以调用Display的setCurrent()方法来将前一个画面替换掉,我们自行将前一个画面的状态保留起来,并自己控制整个程序画面的切换. 同时我们可以运用 javax.miroedition.lcdui.Command类来给我们的提供菜单项目的功能,分别是:Command.BACK. Comman

MIDP高级UI的使用(二)List组件

列表List 根据上一节的概述我们已经大概了解了Lcdui 这个包,现在让我们来介绍Screen 类这个类里面的几个重要的类,我们本届家少的是Screen 的一个子类List, 它一共有三种具体的类型:implicit( 简易式) ,exclusive( 单选式) ,multiple( 多选式) . 与相关的List 元素相关的应用程序操作一般可以概括为ITEM 型命令或者SCREEN 类型命令,其作用域范围的判断依据是该操作是影响到被选择原则元素还是整个List 来判定,List 对象上的操作

MIDP高级UI的使用(四)Alert

这个类比较有意思,它是用来提醒用户关于错误或者其他异常情况的屏幕对象,这个警告只能作为简短的信息记录和提醒,如果我们需要长一点的,我们可以使用其它的Screen 子类,最常见的是Form .同时我们顺便提一下和它相关的一个类AlertType ,需要提醒读者注意的一点是AlertType 是一个本身无法实例化的工具类.(即我们不能像Form 那样产生具体对象) AlertType 共有5 个类型:ALARM (警报),CONFIRMATION (确定),ERROR (错误),INFO (信息提示

《Linux 高级程序设计(第三版)》——2.2 GCC/GDB编译调试工具基础

2.2 GCC/GDB编译调试工具基础 Linux 高级程序设计(第三版) GCC/G++是GNU最优秀的自由软件之一,它主要提供C/C++程序的编译工作.Linux下的C.C++程序开发过程中,一般都采用GCC/G++/GDB工具.将C语言程序编译成一个可执行文件一般都需经过以下4个步骤. (1)预处理(Preprocessing):对源代码文件中的文件包含.宏定义.预编译语句进行分析和替换. (2)编译(Compilation):根据编译器的语法规则,将高级语言转换为以.s为后缀的汇编语言文

《Linux 高级程序设计(第三版)》——第2章 Linux下C语言开发工具 2.1 常用编辑工具

第2章 Linux下C语言开发工具 Linux 高级程序设计(第三版) Linux操作系统绝大多数的内核代码都是由C语言编写,因此,在Linux下的应用程序,特别是需要与内核进行交互的程序一般都是由C语言编写的,C++程序并不多见,例如驱动开发几乎都是由C语言编写的.因此,本书所有内容都立足于Linux下的C程序开发.本章主要介绍Linux下进行C语言程序开发所必备的工具. 本章第1节主要介绍Linux环境下常用的开发工具,包括常用的编辑器.这些编辑器类似于Windows平台下的记事本和Word

《Linux 高级程序设计(第三版)》——第1章  Linux下C语言开发环境 1.1 Linux操作系统简介

第1章 Linux下C语言开发环境 Linux应用程序开发平台有别于Windows应用程序开发平台,因此在介绍具体编程内容之前,本书第1.2章主要介绍Linux操作系统下C语言程序的开发环境和开发工具. 本章主要介绍Linux下C语言开发环境,包括一些基本概念和基本编程环境.本章第1节主要对Linux操作系统及其相关术语进行了简要介绍. 本章第2节主要介绍Linux操作系统下编程基本概念以及如何获得Linux下的帮助文件,包括Linux操作系统下C语言库文件标准以及系统调用的基本概念. 本章第3

《Linux 高级程序设计(第三版)》——1.4 Linux下编码风格

1.4 Linux下编码风格 Linux 高级程序设计(第三版) 下面为读者列出GNU编码规范和Linux内核编码规范示例. 1.4.1 GNU编码规范 下面是GNU emacs中的一段代码. /* Interface from Emacs to terminfo. Copyright (C) 1985, 1986 Free Software Foundation, Inc. This file is part of GNU Emacs. GNU Emacs is free software;

Jquery easy UI 上中下三栏布局

效果图: 源代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Jquery easy

《Linux 高级程序设计(第三版)》——1.3 部分常用工具简介

1.3 部分常用工具简介 Linux 高级程序设计(第三版)1.3.1 tar打包器 如果要发布包含大量程序和文档的程序,则需对其进行打包压缩.在Shell命令行下,可以使用的文件压缩工具有:gzip.bzip2和zip.相应的压缩和解压工具如表1-5所示. tar类型的文件是几个文件和(或)目录在一个文件中的集合,tar命令用来创建备份和归档.tar使用的选项有以下几项. -c:创建一个新归档. -x:从归档中抽取文件.即解压缩. -j:压缩/解压bz2格式tar文件. -z:压缩/解压gz格