如何在点击事件上更改CustomButtonField的图片?

时间:2011-06-29 10:53:19

标签: blackberry java-me

I have posted this question previously但答案不合适。提供的解决方案只是在自定义按钮具有焦点和非焦点时更改图片。假设在我的应用程序中,如果用户点击customButton,我需要更改图片,nim通过调用相同的屏幕来执行此操作(即 UiApplication.getUiApplication()。pushScreen(new Screen2(b)); )。 Screen2是保存customButton的屏幕。点击evevt我通过传递aint变量 pic_status 来推动同一个屏幕,该变量确定在新屏幕中在CustomButton中绘制哪张图片。有没有办法在点击事件中更新CustomButtonField中的图片,而无需反复推送同一个屏幕。

 //code in Screen2

public void fieldChanged(Field field, int context) 
 {
    if(field == bf1)
     {

         if(pic_status == 0)
         {
             pic_status=1;


         }
       UiApplication.getUiApplication().pushScreen(new Screen2(pic_status));    


  }



 //code in CustomButtonField

CustomButtonField(String label,int pic_status,long style) 
{    
    super(style);
    this.label = label;
    this.labelHeight = getFont().getHeight();
    this.labelWidth = getFont().getAdvance(label);
    this.notice = s;
    if(pic_status ==0)
    {
    currentPicture1 = onPicture;
    currentPicture2 = onPicture;
    }
    if(pic_status ==1)
    {
    currentPicture1 = clickPicture;
    currentPicture2 = onPicture;
    }
    if( pic_status==2 )
    {
        currentPicture1 = onPicture;
        currentPicture2 = clickPicture;
    }
}

我需要一种方法来更新buttonClick事件上的customButtonField文本和图片,而不是聚焦/非聚焦事件,而不会再次按下同一个屏幕。如果我上面对问题的描述不满意,请添加注释我可以给出更详细的解释我的问题吗?

1 个答案:

答案 0 :(得分:0)

我们可以覆盖CustomButtonField的一些方法,例如protected boolean keyChar (...),protected boolean navigationClick (...),protected boolean trackwheelClick (...),受保护的布尔 touchEvent (...)等,并在点击或选择事件发生时使用它们来更改按钮图像。

例如,在受保护的布尔 touchEvent (...)上,我们可以执行以下任务..

  1. 当我们 TouchEvent.ClICK 时,将图片替换为所需图片。
  2. 调用invalidate()。
  3. 开启 TouchEvent.UNCLICK 恢复原始图片。
  4. 调用invalidate()。