HardBirch

LWUIT 上使用List实现表格

时间:09-11-04 栏目:安卓入门与提高 作者:张飞不张,文采横飞 评论:3 点击: 2,258 次


最近越来越多人用LWUIT,问得问题也越来越多了。最近超级多人问的是,如何使用List实现表格。以前我用Grid实现了表格(http://blog.csdn.net/hellogv/archive/2009/01/12/3759984.aspx
),现在就来说说如何使用List是一个表格。

      先来对比一下Grid表格与List表格:



Grid表格                                List表格

gird
list



Grid表格与List表格所消耗的资源差不多,List所使用的结构和控件(都是Label)略多,但是Grid使用的是Button(衍生于Label,但是多很多方法和属性),所以两者的运行速度都差不多,至于用哪个,就看你喜欢了。



本文的源代码可以到这里下载:http://download.csdn.net/source/1792549




本文关键的两个文件是:Cls_CellList.
java
和ListDemo.java,
Cls_CellList.
java
封装了本文所用的List,而
ListDemo.java则是演示使用,代码简单易明,一般人也能看懂,呵呵呵。



Cls_CellList.
java主要使用了ListCellRenderer这个东西,源代码如下:








































addComponent(BorderLayout.CENTER, cnt);
focus.getStyle().setBgTransparency(255);
focus.getStyle().setBorder(Border.createRoundBorder(10, 10));
}
public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected) {
CellList cellList = (CellList) value;
for(int i=0;i<lbColumm.length;i++)
{
lbColumm[i].setText(cellList.getColumm()[i]);
}
return this;
}
public Component getListFocusComponent(List list) {
//Columm栏不具备选中事件
if(list.getSelectedIndex()>0)
return focus;
return null;
}
}
static public class CellList {
//保存该列的所有字段
private String[] lstColumm;
public CellList(String[] columm) {
//复制数组
lstColumm=new String[columm.length];
System.arraycopy(columm, 0, lstColumm, 0, lstColumm.length);
}
//返回该列
public String[] getColumm(){
return lstColumm;
}
}
}



ListDemo.java源代码如下:




































//取得Columm的标题栏中长度最大的一项
int stringWidth=0;
for(int i=0;i<myList[0].length;i++)
{
int size=Font.getDefaultFont().stringWidth(myList[0][i])+8;//给最长的字段留点空余
if(stringWidth<size)
stringWidth=size;
}
//构造list并且显示
form.addComponent(BorderLayout.CENTER,Cls_CellList.createList(cellArray,stringWidth,new ListActionListener()));
form.setCommandListener(this);
}
public void actionPerformed(ActionEvent arg0) {
Command command=arg0.getCommand();
if(command==backCommand)
UIDemoMIDlet.backToMainMenu();
}
//按下列表触发的事件
private class ListActionListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
int selectIndex=((List)evt.getSource()).getSelectedIndex();
String str="";
for(int i=0;i<myList[selectIndex].length;i++)
str=str+myList[selectIndex][i]+"_";
form.setTitle(str);
}
}
}



声明: 本文由( 张飞不张,文采横飞 )原创编译,转载请保留链接: LWUIT 上使用List实现表格

LWUIT 上使用List实现表格:目前有3 条留言

  1. 地板
    lwuit:

    根据你的帮助 我已经解决了
    谢谢分享!

    2009-11-04 21:41 [回复]
  2. 板凳
    lwuit:

    问题不断:^_^
    当数据变多后有两种不行:
    focus 往下跑超出屏幕不见了。怎样实现定在屏幕然后滚动 list(使focus始终在屏幕上下滚动)。
    数据多时纵向滚动条好使。横向的不好使了。不能向右拉动。(或者点右键 屏幕左移动)

    2009-11-09 16:32 [回复]
  3. 沙发
    lwuit:

    等待您的解决

    2009-11-14 00:05 [回复]

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐