Jav*_*ert 2 java swing jtable cell tablecellrenderer
我有这些数据:
我的问题是:
JTable在鼠标按下事件中更改单元格的背景并在鼠标释放事件中更改回正常背景?假设您的意思是找到用于命中检测的单元格的矩形:
Rectangle cell = table.getCellRect(row, column, false);
Run Code Online (Sandbox Code Playgroud)
对于背景更改,在mouseListener代码中,设置标记哪个单元格,按下/释放时重新绘制并实现检查标记的自定义渲染器.一些伪代码
void mousePressed(MouseEvent ev) {
// get the row/column from mouse location
int column = table.columnAtPoint(ev.getPoint());
int row = table.rowAtPoint(ev.getPoint());
// set some kind of marker, f.i. as client property
table.putClientProperty("hitColumn", column);
table.putClientProperty("hitRow", row);
// get the rectangle for repainting
Rectangle cell = table.getCellRect(column, row, false);
table.repaint(cell);
}
void mouseReleased(MouseEvent ev) {
// similar to reset the marker
....
table.repaint(cell);
}
// custom renderer extends DefaultTableCellRenderer
JComponent getTableCellRendererComponent(..., row, column ...) {
Integer hitColumn = table.getClientProperty("hitColumn");
Integer hitRow = ....
if (hitColumn != null && column == hitColumn && hitRow ....) {
setBackground(hitColor);
} else {
// force super to handle the background
setBackground(null);
}
return super.getTableCellRendererComponent(....);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |