好久没发文了,原因是工作太忙,忙的没时间思考~~
今天刚处理了一个问题,感觉很有代表性。发出来共享:
需求是这样的,要在JTable中定位数据,并让定位的那行数据居中显示。
代码如下:这里面要注意的是JTable高度的取得,这个高度不是JTable的而是它外面的JScrollPane的。
- /**
- * 在JTable进行定位
- * @param table 指定的JTable
- * @param row 要定位的行
- * @param height JTable的高度
- * */
- private void setSelectionInterval(JTable table,int row,int height){
- table..setRowSelectionInterval(row,row);
- //滚动到指定行
- Rectangle rect = table.getCellRect(row,0,true);
- int halfTableHeight = height / 2;
- //根据居中显示的要求,设定显示区域的坐标和高度属性
- if ( rect.y - halfTableHeight > 0 ) {
- //纵坐标为当前纵坐标 - JTable一半的高度 + 30像素的修正值
- rect.y = rect.y - halfTableHeight + 30;
- //显示区域等于当前高度 + JTable的高度
- rect.height += height;
- }
- table.scrollRectToVisible(rect);
- }