我这样用动态数组保存了找到的用色方块,怎么样让他消掉之后上面的方块下落啊,我这样写为什么不行?
public void actionPerformed(ActionEvent arg0) {
MyButton btn = (MyButton)arg0.getSource();
Block block = new Block(btn.row,btn.col,btn.color);
//System.out.print(block.color);
getBlocksInSameColor(block);
ArrayList<Block> h = checkedBlocks; //接收数组里面的元素
for(int i=0;i<h.size();i++){ //每个按钮依次显示出来
Block b=h.get(i);
System.out.println("row"+b.row+"col"+b.col+"color"+b.color);
btnArr[b.row][b.col].color = 0;
if(btnArr[b.row][b.col].color == 0){
btnArr[b.row][b.col].setText("0");
//btnArr[b.row][b.col].setEnabled(false);
}
}
reset();
}
//下落,重组面板
public void reset(){
for(int row = 9;row>=0;row--){ //循环面板,找到颜色为O的方块
for(int col = 9; col>=0;col--){
if(btnArr[row][col].color==0){ //如果找到方块颜色为0,与这个方块列上面颜色不为0的方块调换位置
for(int row1 = row-1;row1>0;row--){//找这一列中有木有颜色不为0的方块,有的换调换方块的值,
if(btnArr[row1][col].color !=0){
int temp = btnArr[row][col].color;
btnArr[row][col].color = btnArr[row1][col].color;
btnArr[row1][col].color = temp;
break;
}
}
}
}
}
}
public void actionPerformed(ActionEvent arg0) {
MyButton btn = (MyButton)arg0.getSource();
Block block = new Block(btn.row,btn.col,btn.color);
//System.out.print(block.color);
getBlocksInSameColor(block);
ArrayList<Block> h = checkedBlocks; //接收数组里面的元素
for(int i=0;i<h.size();i++){ //每个按钮依次显示出来
Block b=h.get(i);
System.out.println("row"+b.row+"col"+b.col+"color"+b.color);
btnArr[b.row][b.col].color = 0;
if(btnArr[b.row][b.col].color == 0){
btnArr[b.row][b.col].setText("0");
//btnArr[b.row][b.col].setEnabled(false);
}
}
reset();
}
//下落,重组面板
public void reset(){
for(int row = 9;row>=0;row--){ //循环面板,找到颜色为O的方块
for(int col = 9; col>=0;col--){
if(btnArr[row][col].color==0){ //如果找到方块颜色为0,与这个方块列上面颜色不为0的方块调换位置
for(int row1 = row-1;row1>0;row--){//找这一列中有木有颜色不为0的方块,有的换调换方块的值,
if(btnArr[row1][col].color !=0){
int temp = btnArr[row][col].color;
btnArr[row][col].color = btnArr[row1][col].color;
btnArr[row1][col].color = temp;
break;
}
}
}
}
}
}