Swing/FishEyeTable のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/FishEyeTable へ行く。
- 1 (2008-11-24 (月) 16:48:07)
- 2 (2008-12-25 (木) 16:12:38)
- 3 (2011-05-13 (金) 23:02:34)
- 4 (2013-01-15 (火) 17:43:01)
- 5 (2014-11-29 (土) 01:46:17)
- 6 (2014-12-18 (木) 17:13:04)
- 7 (2015-03-19 (木) 16:13:47)
- 8 (2016-05-26 (木) 01:02:09)
- 9 (2016-09-28 (水) 17:08:30)
- 10 (2017-11-09 (木) 14:07:40)
- 11 (2018-02-24 (土) 19:51:30)
- 12 (2019-07-03 (水) 17:52:32)
- 13 (2021-03-14 (日) 19:52:32)
TITLE:JTableの行の高さを変更する
JTableの行の高さを変更する
Posted by terai at 2008-11-24
概要
JTableの行の高さを変更して、マウスカーソルの下を魚眼レンズのように拡大します。
- &jnlp;
- &jar;
- &zip;
#screenshot
サンプルコード
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 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);
}
}
解説
上記のサンプルでは、マウスカーソルの下の行の高さを、JTable#setRowHeight() メソッドを使って変更することで、魚眼レンズのように拡大するようになっています。
- 注意
- JTable#setFillsViewportHeight(true); を使用しているので、JDK 6 以上が必要です。
- JTableの高さが変更される場合は考慮していません。