繁体   English   中英

TableModel.fireTableCellUpdated(tableRowIndex, tableColumnIndex) 不更新 JTable 中的单元格

[英]TableModel.fireTableCellUpdated(tableRowIndex, tableColumnIndex) is not updating the cell in JTable

我的代码中有一个 JTable。

每当行(基本上是单元格)中的任何特定列有更新时,我都会更新该单元格中的相应图标。

所以我基本上遵循这些步骤。

第 1 步:我更新模型。

第2步2:我打电话

       tableModel.fireTableCellUpdated(tableRowIndex, tableColumnIndex);

这工作正常。

但是当我将列从表标题中的一个位置拖放到另一个位置时,问题就出现了。 每当对任何特定单元格进行更新时,我都会按照我之前提到的相同步骤进行操作。

问题:我没有看到图标被绘制。 但是,如果我将焦点放在表格中该行的顶部,则它正在绘制图标。

观察:拖动列后,我看到 tableRowIndex 和 tableColumnIndex 是正确的。

只是为了测试,我在问题场景中添加了这段代码。

     examTable.repaint(examTable.getCellRect(examTableRowIndex, examTableColumnIndex, true));

这是正确重新绘制单元格。

但这不是我猜的正确解决方案。 我试图调试代码我没有找到太多关于问题的信息

我打电话给 tableModel.fireTableCellUpdated(tableRowIndex, tableColumnIndex);

那是错的。 永远不要直接调用 firXXX 方法。 这是 TableModel 的工作,用于在数据更改时调用适当的事件。

我将更新该单元格中的相应图标。

您需要做的就是调用 model.setValueAt(...) 方法来更改图标,模型将通知表数据已更改,以便表可以重新绘制自身。

ExamTable.repaint(...)

同样,您不需要手动调用桌子上的重绘

但是当我将列从表标题中的一个位置拖放到另一个位置时,问题就出现了。

如果您遵循上面的建议,不确定为什么需要特殊代码。 但是如果由于某种原因仍然有必要,那么您需要查看convertColumnIndex...(...)方法以确保您为您的列使用了正确的索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM