找到JTable单元并绘制它

我有这些数据:

  1. 行号
  2. 列号
  3. 细胞价值

我的问题是:

  1. 如何使用这些数据找到单元格?
  2. 如何在鼠标按下事件上更改JTable单元格的背景,并在鼠标释放事件中更改回正常背景?
  3. 我可以在没有用户交互的情况下突出显示JTable,意味着点击其他一些JTable单元我想通过使用给定的信息突出显示另一个JTable单元,是否可能?

假设您的意思是找到用于命中检测的单元格的矩形:

  Rectangle cell = table.getCellRect(row, column, false); 

对于背景更改,在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, fi 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(....); }