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 閱讀(387)
評論(0) 編輯 收藏 所屬分類:
Blackberry