BB上面提供可继承的ListField类,我们可以直接继承此类,然后重写里面的方法,另外继承ListFieldCallBack接口,实现回调。
请看代码:
MyList.java
package com.mdev;
import net.rim.device.api.ui.ContextMenu;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.component.ListField;
import net.rim.device.api.ui.component.ListFieldCallback;
/**
*
* @author Sinfrancis wong
* @site: http://mdev.cc
*
*/
public class MyList extends ListField implements ListFieldCallback {
String[] datas = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"};
/**
* 数据总长度
*/
int dataSize;
/**
* 每一行的高度
*/
int rowHeight;
public MyList() {
rowHeight = 40;
dataSize = datas.length;
/**
* 设置回调函数
*/
setCallback(this);
/**
* 设置一共有多少行
*/
setSize(dataSize);
/**
* 设置每一行高度
*/
setRowHeight(rowHeight);
}
protected void paint(Graphics graphics) {
/**
* 画出背景
*/
graphics.setColor(0x336699);
graphics.fillRect(0, 0, getPreferredWidth(), getPreferredHeight());
graphics.setColor(0x000000);
int i = 0;
while( i < dataSize){
drawListRow(this, graphics, i, i*getRowHeight(), getPreferredWidth());
i++;
}
}
protected void layout(int width, int height) {
/**
* 设置整个ListField的总高度和宽度
*/
setExtent(getPreferredWidth(), getPreferredHeight());
}
public int getPreferredHeight() {
return dataSize * rowHeight ;
}
public int getPreferredWidth() {
return 360;
}
public void drawListRow(ListField listField, Graphics graphics, int index,
int y, int width) {
/**
* 画出文字
*/
graphics.drawText(datas[index], 10, y);
/**
* 画出下划线
*/
graphics.drawLine(0, y+rowHeight, 360, y+rowHeight);
}
public Object get(ListField listField, int index) {
return datas[index];
}
public int getPreferredWidth(ListField listField) {
return getPreferredWidth();
}
public int indexOfList(ListField listField, String prefix, int start) {
return 0;
}
protected void makeContextMenu(ContextMenu contextMenu) {
}
}
MyScreen.java
package com.mdev;
import java.util.Vector;
import net.rim.device.api.ui.ContextMenu;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.component.Menu;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;
/**
*
* @author Sinfrancis wong
* @site: http://mdev.cc
*
*/
public class MyScreen extends MainScreen {
public MyScreen() {
MyList m = new MyList();
/**
* 设置VerticalFieldManager可以滚动
*/
VerticalFieldManager fieldManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL|Manager.VERTICAL_SCROLLBAR|Manager.VERTICAL_SCROLLBAR_MASK){
protected void sublayout(int maxWidth, int maxHeight) {
super.sublayout(maxWidth, maxHeight);
/**
* 设置Manager的大小为300*200,list里面的数据只在这个范围内滚动,如果注释掉就会显示全屏。
*/
setExtent(300, 200);
}
protected void makeContextMenu(ContextMenu contextMenu) {
}
protected void makeMenu(Menu menu, int instance) {
}
};
/**
* 设置外上边距和外左边距
*/
//fieldManager.setPadding(50, 0, 0, 10);
/**
* 设置内上边距和内左边距
*/
fieldManager.setMargin(50, 0, 0, 10);
//**注意:如果设置外上边距,请将list field的总高度加上您设置的外上边距高度,
//**比如manager外上边距为 50,那么list field的总高度也要加上50,不然无法滚动到底。
//**设置内上边距,list field无需在加上内上边距的高度
//**以上是在非全屏模式下的listfield
fieldManager.add(m);
add(fieldManager);
}
protected void makeContextMenu(ContextMenu contextMenu) {
}
protected void makeMenu(Menu menu, int instance) {
}
}
MyApplication.java
package com.mdev;
import net.rim.device.api.ui.UiApplication;
/**
*
* @author Sinfrancis wong
* @site: http://mdev.cc
*
*/
public class MyApplication extends UiApplication {
public MyApplication() {
MyScreen m = new MyScreen();
pushScreen(m);
}
public static void main(String[] args) {
MyApplication myApplication = new MyApplication();
myApplication.enterEventDispatcher();
}
}
所有应该注意的地方都写在注释里面了,请看注释,截图:
- 大小: 6.2 KB
分享到:
- 2009-11-02 10:43
- 浏览 1231
- 评论(0)
- 论坛回复 / 浏览 (0 / 2250)
- 查看更多
相关推荐
所幸BlackBerry平台上面创建定制的UI组件是一件比较简单的事情。 二 BlackBerry UI Field 从BlackBerry API Java doc中我们看到,我们常用的UI组件,即Field,比如文本框ButtonField、LabelField、TextField等等都是...
项目源代码,如果要编译这个项目,把编译器的版本改为1.4(最新的是1.6),在项目的Property->Java Compiler中修改。 效果参考博客: http://blog.csdn.net/BBHeipy/archive/2010/07/09/5723443.aspx
7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓...
老黑莓OS经典软件合集大全,独家整理,适合黑莓blackberry 7XXX 8XXX 9XXX等黑莓老机型,格式为cod , alx,jad等格式;;怀旧经典,软件清单如下 Twitter70.zip WacaiBlackberry.zip [BerryCN.com_DZH_v5.18] XECurrency-...
黑莓客户端新浪微博
黑莓usb驱动是一款黑莓手机专用驱动,已经装了桌面管理器的电脑就不需要安装了。没有装桌面管理器,又想访问TF卡,装这个就可以了。驱动介绍相信大家在第一次使用黑莓手机连接电脑的时候都出现了没有反应的问题了,...
黑莓blackberry阅读工具 支持格式txt
黑莓操作说明,BlackBerry Manual了解黑莓的第一步。
信黑莓超越输入法定制版本 1.支持发送消息直接输入中文 2.修改按键设置(第一次运行进行初始设置改为无效) 左软键改成QW(对于QWERTY全键盘机器为Q) 右软键改成OP(对于QWERTY全键盘机器为P) 展开用户树、选择用户...
国人翻译的黑莓UI指导, 可以让你开发出更符合黑莓使用习惯的界面
Advanced BlackBerry Development 350 pages | Apress (December 10, 2009) | ISBN: 1430226560 | PDF | 5.6 MB BlackBerry devices and applications are selling by the millions. As a BlackBerry developer, ...
BlackBerry黑莓手机软件安装方法.pdf
此文档包括了黑莓所有的额快捷键,可以让大家进一步的去熟悉使用黑莓..blackberry
黑莓 blackberry8700g 游戏 软件 经典集合
黑莓说明书,中文输入法说明,很好的东东 支持黑莓,要的不是价格是性能!!
Blackberry黑莓手机一键WIPE程序V1.0版
BlackBerry手机,Sony定制微信流畅版,之前可以用,不知道以后还可不可以用
blackberry9630黑莓9630农历日历软件
黑莓新浪微博 黑莓4.5新浪微博 黑莓8830新浪微博 显示黑莓客户端,本人亲测软件,非常不错,目前还在用,跟手机融为一体。 黑莓新浪微博 黑莓4.5新浪微博 黑莓8830新浪微博 显示黑莓客户端 黑莓新浪微博 黑莓4.5...
黑莓系统分类软件集合 黑莓软件集合, QQ 飞信等