BlackBerry 界面开发过程中,我们继承 Field 或者 它的子类 来制作自己的客户定制组件
覆盖 protected void paint( Graphics g) ,在方法里可以绘制组件。
覆盖 protected void layou( int width, int height ), 在方法里决定组件的位置。
覆盖 public boolean isFocusable() , 在方法里返回 true ,指示组件可以接受焦点。
覆盖 protected void drawFocus(Graphics graphics, boolean on) , 在方法里绘制接受焦点时组件的外观。
覆盖 protected void onFocus( int direction),得到焦点时将引发该方法,可以描述得到焦点时,组件的行为。
覆盖 protected void onUnFocus(),失去焦点时将引发该方法,可以描述失去焦点时,组件的行为,
覆盖 protected int moveFocus(int amount, int status, int time),焦点在组件内移动引发该方法,只有焦点在组件内才有效。
覆盖下列方法可以为 组件 提供对于各种事件的反应:
protected boolean keyChar(char character, int status, int time)
protected boolean keyControl(char character, int status, int time)
protected boolean keyDown(int keycode, int time)
protected boolean keyRepeat(int keycode, int time)
protected boolean keyStatus(int keycode, int time)
protected boolean keyUp(int keycode, int time)
覆盖上面的方法可以控制客户定制组件的各种基本行为。
但是做到这里,只是完成组件的内在行为和特性,
但我们还需要在客户组件产生事件的时候,和别的组件通信,通知其他组件。
常用的方法是注册一个事件侦听器( eventListener),
BlackBerry 有三种时间侦听器:
FieldChangeListener,侦听组件属性改变事件
FocusChangeListener,侦听组件焦点变化事件,只有在接收到焦点时有效
ScrollChangeListener,侦听组件滑轮变化事件,只有在有滑轮时有效
FieldChangeListener,有点特殊,客户组件需要自己引发 FieldChange 事件。
引发方法是,在客户组件类中覆盖以下两个方法:
protected boolean navigationClick(int status, int time){
fieldChangeNotify(1);
return true;
}
protected void fieldChangeNotify(int context){
try{
this.getChangeListener().fieldChanged(this, context);
}
catch (Exception exception)
{
}
}
这样,当按浏览中键时,便可以引发 FieldChange 事件。
引发方法是可以改变的,keyDown(), KeyUp()...中都可以调用 fieldChangeNotify(1),引发 fieldChange 事件。
posted on 2008-08-21 05:48
lincode 阅读(380)
评论(0) 编辑 收藏 所属分类:
Blackberry