2
當我嘗試在畫布中創建複選框時遇到問題。如何在畫布中創建多個複選框
我的複選框工作正常,但我不知道如何存儲每個項目的值,這意味着當用戶檢查行1,然後他們移動到另一行復選框仍然檢查行1,並且當用戶檢查行1和2移動到另一行,複選框將檢查行1和2
但我不能找到解決這個問題
當我嘗試在畫布中創建複選框時遇到問題。如何在畫布中創建多個複選框
我的複選框工作正常,但我不知道如何存儲每個項目的值,這意味着當用戶檢查行1,然後他們移動到另一行復選框仍然檢查行1,並且當用戶檢查行1和2移動到另一行,複選框將檢查行1和2
但我不能找到解決這個問題
修改代碼以使用selectTodelete
爲布爾數組來代替INT,約如下所示
// ...initialization of DataList
boolean[] selectTodelete = new boolean[2]; // instead of int
{ selectTodelete[0] = selectTodelete[1] = false; } // init array
Command editCommand, backCommand,selectCmd, unselectCmd,selectAll;
//...
protected void paint(Graphics g) {
//...
for(int i =0 ; i<countRow; i++){
//draw background
//...
if(selectTodelete[i]){ // was selectTodelete == 1
//draw select dot at location for row 'i'
//...
}
// remove: you don't need that anymore: if(selectTodelete == 2) {
//draw select dot...
//}
// draw a checkbox before each item
// ...
}
}
public void commandAction(Command c, Displayable d) {
//...
if(c == selectCmd){
selectTodelete[selectedItem] = true;
}
if(c== unselectCmd){
selectTodelete[selectedItem] = false;
}
if(c == selectAll){
selectTodelete[0] = selectTodelete[1] = true;
}
repaint();
}
//...
}
我想RCID適合檢查了它的意思,當行被選中,我可以得到這個ID,當我使用delete命令將刪除所有行進行了檢查
對於這一點,你可以公開selectTodelete
使用其類外吸氣劑,或者更好的,具有類似下面的方法......
boolean isSelected(int elementNum) {
return elementNum >= 0 && elementNum < selectTodelete.length
&& selectTodelete[elementNum];
} // modelled after javax.microedition.lcdui.Choice.isSelected
...暴露這樣的消息可以進一步在任何地方使用時,你需要它來處理RCID,例如像在下面的方法:
Vector useSelection(DataList dataList, DataStore[][] ds) {
Vector result = new Vector();
int count = ds.length;
for(int i = 0; i < count; i++) {
if (!dataList.isSelected(i)) {
continue; // skip non selected
}
System.out.println("RCID selected: [" + ds[i][5].cellText + "]");
result.addElement(ds[i][5]);
}
return result;
}
非常感謝你:d – MYE
對不起大哥,我能問你一個問題。在我的代碼中,我希望得到RCID適合檢查它是什麼意思,當檢查行時,我可以得到這個ID,當我使用刪除命令時,它將刪除所有行被檢查。謝謝 – MYE
@MYE我更新了答案,展示瞭如何使用'selectTodelete'來處理RCID – gnat