public static Display getDisplay(MIDlet c);
This is typically done in the startApp( ) method of a MIDlet, as follows:
public class MyMIDlet extends MIDlet {
Display display = null;
public MyMIDlet( ) {}
public void startApp( ) {
display = Display.getDisplay(this);
}
// 其它方法
}
public void setCurrent(Displayable d);
public void setCurrent(Alert alert, Displayable d);
public Displayable getCurrent( );
public void boolean inColor( );
public int numColors( );
图1.包lcdui中的主要类间的类关系图
然而,Screen仅是一个有其自身一些功能的抽象类。每个Screen可以有两个额外的特性:标题和ticker。标题是显示在screen 内容之上的一个字符串。Ticker是一个图形组件,它显示在标题上方,可用于横向卷动显示给用户的信息。二者皆是可选的,尽管标题串有一个缺省的内容。如果省略了ticker,则一点不显示并把相应的空间让给screen。后面我们要讨论Ticker组件。但是,图 2显示了Screen 对象的标题和ticker 属性之间的相对位置关系。
图 2.屏幕上的标题和ticker
Screen 类的下列方法可以分别用于设置和检索标题和ticker。public void setTitle(String title);
public String getTitle( );
public void setTicker(Ticker ticker);
public Ticker getTicker( );
3. Ticker
Ticker类可用横跨显示区显示一串连续的文本。它可以依附于一个或多个前面已述的screen上:Alert,TextBox,List和Form。可以用Ticker构造器创建一个ticker对象:public Ticker(String str);
你可以用下面方法存取ticker中的文本串:public String getString( );
public void setString(String s);
一旦生成一个ticker,就可以用该screen的setTicker( )方法把它依附于该screen。如,下列代码生成一个List screen并把一个ticker依附于它:Display display = Display.getDisplay( );
List list = new List("Trade Stocks", Choice.EXCLUSIVE);
list.append("Buy", null);
list.append("Sell", null);
list.setTicker(new Ticker("Welcome to my discount broker"));
display.setCurrent(list);
图 3 显示了ticker的外观,它处于当前显示的List组件的上方。
图 3.一个ticker的例子
在使用ticker时要注意以下几点:
·没有提供启动和停止该ticker的方法函数。
·该ticker字符串连续卷动。也就是说,当该字符串在显示屏上显示结束,该ticker接着在该串的起始位置开始显示。在串的结尾加上一些空格可能有助于使得字符串的显示看上去不是连接在一起的。
·卷动的方向和速度由MIDP系统的实现来决定。
4. TextBox
TextBox对象是一个允许用户输入和编辑文本的screen。在MIDlet程序需要用户输入诸如姓名,电话号码,e-mail地址或者口令字时,你可以选用TextBox控件。你可以通过指定四个参数给TextBox的构造器来创建一个TextBox 对象:public TextBox(String title, String text, int maxSize, int constraints);
title被复用作该screen的标题,参数text和maxSize用于指定初始(缺省的)文本和该文本框的最大尺寸。最后,constraints参数可用于限制用户的输入。Constraints取值为TextBox类的静态常整型常量,由TextField和TextBox类共享使用,如下:
常量说明TextField.ANY允许用户输入任何字符TextField.EMAILADDR必须输入一个e-mail地址TextField.NUMBER 必须输入一个整型值TextField.PASSWD文本以*蒙盖,因此输入的文本是不可见的TextField.PHONENUMBER必须输入一个电话号码TextField.URL必须输入一个URL地址
如果你给constraints的指定值不是TextField.ANY,系统将执行校验以确保输入满足要求。
注意:约束值TextField.PASSWD可以和任何其它约束值值通过OR(|)运算符相结合。如,如果你要产生一个TextBox,并限制输入为电话号码,但又想隐藏输入数据,可以如下创建对象:TextBox t=new TextBox("Tel","",12,TextField.PHONENUMBER|TextField.PASSWD);
如果你想检索当前活动的TextBox的约束值,可以如下:public int getConstraints( );
public void setConstrants(int c);
另外应该指出的是,一个文本框有一个容量限定(即最大字符数)。但是,每一个MIDP系统实现都将对该最大容量设置一个边界值,它可能比应用程序要求的尺寸要小。系统允许的最大尺寸可以用方法getMaxSize( )来检索,也可应用方法setMaxSize( )来复位。public int getMaxSize( );
public void setMaxSize(int size);
一个书写良好的MIDP应用程序应该总是比较它要求的大小和当前的最大值。
在当前MIDP的来自于Sun Microsystems的参考实现中,getMaxSize( )方法总是返回MIDlet要求的尺寸。但是不要因此而放弃比较的习惯。
你还可以通过使用方法setString( )和getString( )来设置或者检索TextBox对象的完整的文本:public String getString( );
public void setString(String s);
另外,如果你要知道输入的字符数,可以用方法size( ):public int size( );
你还可以使用下列方法对文本框进行删除,插入,替换等等:public void delete(int offset, int length);
public void insert(char[] data, int offset, int length, int position);
public void insert(String src, int position);
public void setChars(char[] data, int offset, int length);
最后,要确定插入点位置,可以用下面方法:public int getCaretPosition( );
下面的小例创建一个文本框,标签为"TextBox",初始文本值为"This is a text box",最大尺寸为20个字符,可以输入任何字符。TextBox tb = new TextBox("TextBox", "This is a textbox", 20, TextField.ANY);
Display display = Display.getDisplay(this);
display.setCurrent(tb);
如果你写一个完整的MIDlet程序并在模拟器中运行,会看到如图 4所示的效果。注意,如果要显示的文本长于一屏的,系统将允许用户卷动查看并进行编辑-具体依赖于系统的实现。
图 4.display和screen之间的关系< 猜你喜欢