随笔 - 35  文章 - 21  trackbacks - 0
<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿

随笔分类

随笔档案

文章分类

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

 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 阅读(373) 评论(0)  编辑  收藏 所属分类: Blackberry

只有注册用户登录后才能发表评论。


网站导航: