Code
public void mouseMoved(MouseEvent e) {
int row = rowAtPoint(e.getPoint());
if(prev_row==row) return;
initRowHeigth(prev_height, row);
prev_row = row;
}
public void initRowHeigth(int height, int ccRow) {
int rd2 = (fishEyeRowList.size()-1)/2;
int rowCount = getModel().getRowCount();
int view_rc = getViewableColoredRowCount(ccRow);
int view_h = 0; for(int i=0;i < view_rc;i++) view_h += fishEyeRowHeightList.get(i);
int rest_rc = rowCount - view_rc;
int rest_h = height - view_h;
int rest_rh = rest_h/rest_rc; rest_rh = rest_rh > 0?rest_rh:1;
int a = rest_h - rest_rh*rest_rc;
int index = -1;
for(int i=-rd2;i < rowCount;i++) {
int crh;
if(ccRow-rd2 <= i && i <= ccRow+rd2) {
index++;
if(i < 0) continue;
crh = fishEyeRowHeightList.get(index);
}else{
if(i < 0) continue;
crh = rest_rh+(a > 0?1:0);
a = a-1;
}
setRowHeight(i, crh);
}
}
References
No comments:
Post a Comment