J2ME自己画界面–List的实现

书接上回,还记得我们上次讲的如何自己定制一套菜单框架吗?忘记了啊,点这里可以看一下

其实在写这个List前我做了一个Table,只不过目前没有实现完,我觉得List更简单一些,就先吧List实现了。

这次我们要利用这个Form结构来实现一个自己的List,有朋友说了J2ME自己不是提供了 List 控件了吗?
对的,是提供了,但是功能我认为还不够强大,而且不能结合这个菜单显示,自己动手丰衣足食啊。还是自己画吧~

我们这个List取名为KList区别与系统自身的List.

在画这个List前,要解决一个事情,就是滚动条的问题。我们这里只解决垂直滚动条(水平滚动条我也实现了,不过我觉得List没有必要放置一个水平滚动条吧,手机屏幕那么小,太乱了,你觉得呢?)。

根据当前工作区的高度,以及每个列要显示的高度,来计算一个屏幕显示多个个item,然后来算出滚动条的位置,通过捕获UP,DOWN键事件来移动元素和滚动条。

我们定义这个KList拓展自FormCanvas类。每个Item可以放置Object类型,除了Image类型外,其它类型要实现toString()方法。他自身提供了OnSelectedItem事件和获得当前选中项,以及界面美工相关方法。

下面是截图:

(图一:选中第12个元素(数组是从0开始的啊))

(图二:通过预先注册的事件来获得确认操作)

(图三:看看这个菜单)

(图四:Item带Icon和第3个Item是图片)

如何使用呢?

首先产生一个KList对象,然后向里面扔MenuBar对象,和注册OnSelectedListener事件,数据用KListeItem表示。就可以了。

调用代码:

this.klist = new KList();
tabBar = new MenuBar();
tabLabel = new Component("后退");
tabMenu = new Menu("菜单");
tabMenu.addItem(new MenuItem("开始"));
tabMenu.addItem(new MenuItem("产看详细"));
tabMenu.addSeparator();
tabMenu.addItem(new MenuItem("删除"));
tabBar.setLabel(tabLabel);
tabBar.setMenu(tabMenu);
klist.setFullScreenMode(true);
klist.setMenuBar(tabBar);
KListItem[] items = new KListItem[20];
for(int i=0;i<items.length;i++)
{
items[i]=new KListItem();
items[i].setValue("你的列表_"+i);
}
klist.setHeader(header);
klist.setItems(items);
klist.setOnSelectedItem(new IListItemListener(){
public void actionPerformed(IListItemEvent e) {
alert.setString("当前选中ListeItem="+e.getItem().getValue().toString());
display.setCurrent(alert);
}});

这个调用非常简单了吧,像Swing吧。哈哈
使用起来非常简单。尽量符合Swing的开发模式。

好了,下一节讲述Calendar工具。呵呵,还没有做呢,有时间再搞吧。

分享到: 更多