User interface Blackberry-复选框组的自定义逻辑
如果单击任何复选框,则必须选中之前的所有复选框 “我的逻辑有效” 如果我取消选中一个复选框,那么它之后的所有复选框都必须取消选中 “怎么做?” MyLogic适用于storm,但不适用于其他型号 做什么User interface Blackberry-复选框组的自定义逻辑,user-interface,blackberry,checkbox,custom-controls,User Interface,Blackberry,Checkbox,Custom Controls,如果单击任何复选框,则必须选中之前的所有复选框 “我的逻辑有效” 如果我取消选中一个复选框,那么它之后的所有复选框都必须取消选中 “怎么做?” MyLogic适用于storm,但不适用于其他型号 做什么 //well what i want to do is i have 5 checkboxes class myscreen { chk_service = new CheckboxField[5]; chk_service[0]= new Ch
//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);
}
}
}
}
}
//我想做的是我有5个复选框
类myscreen
{
chk_服务=新复选框字段[5];
chk_服务[0]=新的复选框字段(“1”,真)
chk_服务[1]=新复选框字段(“2”,假)
chk_服务[2]=新复选框字段(“3”,假)
chk_服务[3]=新复选框字段(“4”,假)
chk_服务[4]=新复选框字段(“5”,假)
CheckboxFieldChangeListener对象=
新CheckboxFieldChangeListener(chk_服务);
chk_服务[0].setChangeListener(obj);
chk_服务[1].setChangeListener(obj);
chk_服务[2].setChangeListener(obj);
chk_服务[3].setChangeListener(obj);
chk_服务[4].setChangeListener(obj);
hm4=新HorizontalFieldManager();
hm4.add(chk_服务[0]);
hm4.添加(chk_服务[1]);
hm4.添加(chk_服务[2]);
hm4.添加(chk_服务[3]);
hm4.add(chk_服务[4]);
添加(hm4);
}
公共CheckboxFieldChangeListener(CheckboxField[]字段)
{
m_arrFields=arrFields;
}
公共无效字段已更改(字段,int上下文)
{
if(true==((CheckboxField)字段).getChecked()
{
for(int i=0;i
尝试以下代码,在tour、storm和bold上工作
class MyScreen扩展了主屏幕{
int mcheckbox=5;
向量mcheckbox=新向量();
CheckBoxListener mCBListener=新的CheckBoxListener();
公共MyScreen(){
对于(int i=0;i
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;
}
}
}
}