欢迎光临
我们一直在努力

J2ME学习笔记(七)-JSP教程,J2EE/EJB/服务器

建站超值云服务器,限时71元/月

做手机的程序开发,肯定就会涉及到图形处理方面的问题咯。与事务处理一样,midp将图形介面处理

也分成了高级图形介面处理与低级图形介面处理。同样,高级图形介面处理方法是可以方便移值的,但是

功能有限,低级图形介面功能强大,但是再移值以后可能会需要更改部分代码。高级图形介面都需要继承

screen,而低级图形介面则继承canvas,并大量使用graphics所定义的图形处理方法。midp所使用的图形

介面类都属于前面代码中都用过的javax.microedition.lcdui这个package里面。在同一时间(只是同一

时间)内canvas和scree的子类只能存在一个。

screen类中有四个子类,alert,list,textbox,form。其中form是属于没有任何使用介面的元素,

它只是一个容器,可以容纳其他item类在其中用来组合一个复杂的图形使用介面。而其他几个子类则属于

封装了预定的固定图形介面,只能单独的拿来使用。这个其实就和html里面各种输入框与form之间的关系

一样。

呵呵,和以前学其他开发语言一样,一个个的来测试这些子类的各种使用方法。^_^用实际第程序来

说明之间第关系和之间第区别。

一、list

1)choice.implicit

package com.graph;

/**

* @author you li

*

* copyright (c) 2005

*/

import javax.microedition.lcdui.*;

import javax.microedition.midlet.*;

public class implisttest extends midlet implements commandlistener {

private display display;

public implisttest() {

// todo 自动生成构造函数存根

display = display.getdisplay(this);

}

protected void startapp() throws midletstatechangeexception {

// todo 自动生成方法存根

list alist = new list("listtest",choice.implicit) ;

alist.append(" a ",null);

alist.append(" b ",null);

alist.append(" c ",null);

alist.append(" d ",null);

alist.setcommandlistener(this);

display.setcurrent(alist);

}

protected void pauseapp() {

// todo 自动生成方法存根

}

protected void destroyapp(boolean arg0) throws midletstatechangeexception {

// todo 自动生成方法存根

}

public void commandaction(command command, displayable display) {

// todo 自动生成方法存根

system.out.println("command action start … …");

if(command==list.select_command){

list test= (list) display ;

int selected = test.getselectedindex() ;

system.out.println(" item " + selected + "selected") ;

}

}

}

当我们运行这个程序的时候会发现屏幕上出现4个选项,答应出选定的选项的indexid,由此可以看出

来choice.implicit的选项被选中,它会马上使用setcommandlistener()方法注册内容,并同时呼叫comma

dnaction()方法。同时通过commadnaction()方法的第一个参数判断是否使用的是choice.implicit选项。

2)choice.exclusive

package com.graph;

/**

* @author you li

*

* copyright (c) 2005

*/

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class exclisttest extends midlet implements commandlistener {

private display display;

command commit ;

public exclisttest() {

// todo 自动生成构造函数存根

display = display.getdisplay(this);

}

protected void startapp() throws midletstatechangeexception {

// todo 自动生成方法存根

commit = new command("提交",command.screen,1) ;

list alist = new list("listtest",choice.exclusive) ;

alist.append(" a ",null) ;

alist.append(" b ",null) ;

alist.append(" c ",null) ;

alist.addcommand(commit) ;

alist.setcommandlistener(this) ;

display.setcurrent(alist) ;

}

protected void pauseapp() {

// todo 自动生成方法存根

}

protected void destroyapp(boolean arg0) throws midletstatechangeexception {

// todo 自动生成方法存根

}

public void commandaction(command command, displayable display) {

// todo 自动生成方法存根

system.out.println("commadn action start… …");

if(command == commit){

list tmp = (list) display ;

int selected = tmp.getselectedindex() ;

system.out.println("item " + selected + "selected") ;

}

}

}

运行这个程序我们会发现choice.exclusive和choice.implicit之间第区别了。choice.exclusive不

会在我们选择以后马上运行commandaction()方法,我们只能commit的系统选项菜单来完成最后第提交。

当我们点击系统菜单的commit以后会执行commandaction()方法。

3)、choice.multiple

/**

* @author you li

*

* copyright (c) 2005

*/

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class multlisttest extends midlet implements commandlistener {

private display display;

command commit;

public multlisttest() {

display = display.getdisplay(this);

}

protected void startapp() throws midletstatechangeexception {

// todo 自动生成方法存根

commit = new command("提交",command.screen,1);

list alist = new list("listtest",choice.multiple);

alist.append(" a ",null) ;

alist.append(" b ",null) ;

alist.append(" c ",null) ;

alist.addcommand(commit);

alist.setcommandlistener(this);

display.setcurrent(alist);

}

protected void pauseapp() {

// todo 自动生成方法存根

}

protected void destroyapp(boolean arg0) throws midletstatechangeexception {

// todo 自动生成方法存根

}

public void commandaction(command command, displayable display) {

// todo 自动生成方法存根

system.out.println("commadn action start… …");

if(command == commit){

list tmp = (list) display;

int num = tmp.size();

for(int i = 0;i< num;i++){

if(tmp.isselected(i)){

system.out.println("item " + i + "selected");

}

}

}

}

}

这个程序里面我们使用了choice.multiple,也就是多选框的使用。和choice.exclusive一样,只有当

我们使用系统菜单commit以后才会调用commandaction()方法,来进行操作。

二、alert和alerttype

windows,还有一般页面上的对话框见多了,这个alert其实也就是这个作用。它属于screen的子类,

我们可以用display累的setcurrent()方法将它显示在屏幕上,当然,当alert设置喂屏幕画面的时候系统

本身一定要存在一个画面,不然alert无法跳回,会抛出一个错误出来。如果我们喂alert对象设置其aler

ttype的属性alerttype.alarm,alert.forever以后那么需要我们点击系统确认键才会从alert窗口返回原

始窗口。一个简单的例子如下:

只有当显示“窗口”的时候设置了alerttype.alarm,alert.forever属性,所以需要点击“done”以

后alert对象才会关闭。

package com.graph;

/**

* @author you li

*

* copyright (c) 2005 www.iguess.com.cn

*/

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class alerttest extends midlet implements commandlistener{

private display display;

command commit;

public alerttest() {

display = display.getdisplay(this);

}

protected void startapp() throws midletstatechangeexception {

// todo 自动生成方法存根

list alist = new list("listtest",choice.implicit) ;

alist.append(" 窗口 ",null) ;

alist.append(" 确认 ",null) ;

alist.append(" 错误 ",null) ;

alist.append(" 信息 ",null) ;

alist.append(" 警告 ",null) ;

alist.setcommandlistener(this) ;

display.setcurrent(alist) ;

}

protected void pauseapp() {

// todo 自动生成方法存根

}

protected void destroyapp(boolean arg0) throws midletstatechangeexception {

// todo 自动生成方法存根

}

public void commandaction(command command,displayable dis){

if(command == list.select_command){

alert alert = new alert("窗口测试") ;

list temp = (list) dis ;

switch(temp.getselectedindex()){

case 0 :

alert.settype(alerttype.alarm) ;

alert.setstring(" 窗口 ") ;

alert.settimeout(alert.forever) ;

display.setcurrent(alert) ;

break ;

case 1 :

alert.settype(alerttype.confirmation) ;

alert.setstring(" 确认 ") ;

display.setcurrent(alert) ;

break ;

case 2 :

alert.settype(alerttype.error) ;

alert.setstring( "错误 ") ;

display.setcurrent(alert) ;

break ;

case 3 :

alert.settype(alerttype.info) ;

alert.setstring(" 信息 ") ;

display.setcurrent(alert) ;

break ;

case 4 :

alert.settype(alerttype.warning) ;

alert.setstring(" 警告 ") ;

display.setcurrent(alert) ;

break ;

}

}

}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » J2ME学习笔记(七)-JSP教程,J2EE/EJB/服务器
分享到: 更多 (0)