2010-03-12 76 views
1

如果我在任何複選框所有以前的複選框必須得到遏制 單擊「我的邏輯作品」 如果我取消選中複選框,然後後,所有的複選框必須得到選中 「怎麼做」 MyLogic工程風暴而不是其他車型 做什麼黑莓 - 對於複選框組自定義邏輯

//well what i want to do is i have 5 checkboxes 
class myscreen 
{ 
chk_service = new CheckboxField[5];      
chk_service[0]= new CheckboxField("1",true) 
chk_service[1]= new CheckboxField("2",false) 
chk_service[2]= new CheckboxField("3",false) 
chk_service[3]= new CheckboxField("4",false) 
chk_service[4]= new CheckboxField("5",false) 

CheckboxFieldChangeListener obj = 
    new CheckboxFieldChangeListener(chk_service); 
    chk_service[0].setChangeListener(obj); 
    chk_service[1].setChangeListener(obj); 
    chk_service[2].setChangeListener(obj); 
    chk_service[3].setChangeListener(obj); 
    chk_service[4].setChangeListener(obj); 


    hm4 = new HorizontalFieldManager(); 
    hm4.add(chk_service[0]); 
    hm4.add(chk_service[1]); 
    hm4.add(chk_service[2]); 
    hm4.add(chk_service[3]); 
    hm4.add(chk_service[4]); 

add(hm4); 
} 


    public CheckboxFieldChangeListener (CheckboxField[] arrFields) 
    { 
     m_arrFields = arrFields; 

    } 

    public void fieldChanged(Field field, int context) 
    { 
     if(true == ((CheckboxField) field).getChecked()) 
     { 
      for(int i = 0; i < m_arrFields.length; i++) 
      { 
       if(m_arrFields[i]==field) 
       { 
        //a[j]=i; 
        j++; 
        break; 
       } 
       else 
       { 
       CheckboxField oField = m_arrFields[i]; 
       oField.setChecked(true); 
       } 
      }   
     } 
     a[k] = j; 
     if(false == ((CheckboxField) field).getChecked()) 
     { 
      for(int i =field.getIndex(); i < m_arrFields.length; i++) 
      { 
       if(m_arrFields[i]==field) 
       { 
        //a[j]=i; 
        j++; 
        break; 
       } 
       else 
       { 
       CheckboxField oField = m_arrFields[i]; 
       oField.setChecked(false); 
       } 
      }   
     } 


    } 

} 

回答

0

試試這個代碼,巡迴演出,風暴工作,大膽

alt text http://img78.imageshack.us/img78/70/cbbold.jpg

class MyScreen extends MainScreen { 
    int mCheckBoxesCount = 5; 
    Vector mCheckBoxes = new Vector(); 
    CheckBoxListener mCBListener = new CheckBoxListener();  
    public MyScreen() { 
     for (int i = 0; i < mCheckBoxesCount; i++) { 
      CheckboxField cb = new CheckboxField(String.valueOf(i), false); 
      cb.setChangeListener(mCBListener); 
      add(cb); 
      mCheckBoxes.addElement(cb); 
     } 
    }  
    class CheckBoxListener implements FieldChangeListener { 
     boolean mProgrammatic = false; 
     public void fieldChanged(Field field, int context) { 
      if (!mProgrammatic) { 
       mProgrammatic = true; 
       CheckboxField cbField = (CheckboxField) field; 
       int index = mCheckBoxes.indexOf(cbField); 
       if (cbField.getChecked()) { 
        for (int i = 0; i < index; i++) 
         ((CheckboxField) mCheckBoxes.elementAt(i)) 
           .setChecked(true); 
       } else { 
        for (int i = index; i < mCheckBoxesCount; i++) 
         ((CheckboxField) mCheckBoxes.elementAt(i)) 
           .setChecked(false); 
       } 
       mProgrammatic = false; 
      } 
     } 
    } 
}