当其他单元格值更改时禁用 JTable 单元格可编辑

Posted

技术标签:

【中文标题】当其他单元格值更改时禁用 JTable 单元格可编辑【英文标题】:Disable JTable cell editable when other cell value changes 【发布时间】:2013-06-04 19:49:18 【问题描述】:

假设我有一个包含两列 A 和 B 的 JTable。 假设我还有一个包含一些字符串的列表/向量/数组(任何集合)。 当我编辑完 x 行 A 列的单元格(按 Enter 或选择另一个单元格或组件)时,我希望 JTable 检查我在 x 行的 A 列中键入的内容是否在我的列表中。如果是这种情况,我想在 X 行的 B 列中禁用编辑并将该单元格设置为“Ok”。

我不知道该怎么做。我已经搜索过,但发现了一些与我不同的案例。

我们将不胜感激任何帮助。

干杯:)

【问题讨论】:

【参考方案1】:

您需要的是自定义表格模型。 TableModel 接口包含一个方法isCellEditable,您可以使用它来控制此行为。要使用“OK”渲染单元格并且可能是彩色背景,您必须使用自定义CellRenderer

【讨论】:

嘿 :) 感谢您的回复!我让它工作了,但现在的问题是,当我编辑 A 列时,我需要单击 B 列才能看到它说“确定”并更改背景颜色。我希望在完成 A 列的编辑后发生这种情况。 (即无需单击 B 列单元格即可查看更改。我知道问题出在 isCellEditable 仅在我单击 B 列时才被调用,这就是为什么我要想要自己调用它,以便它更新 UI)(我试过 updateUI() 但它什么也没做)。 没关系,找到了!我在 TableModelListener 中使用了 fireTableDataChanged(),现在它可以工作了 :) 再次感谢您的帮助!

以上是关于当其他单元格值更改时禁用 JTable 单元格可编辑的主要内容,如果未能解决你的问题,请参考以下文章

找到 JTable 单元格并绘制它

使用单元格格式获取 JTable 整数单元格值

JTable 单元格更新不起作用

更改单元格颜色而不更改其他单元格中的颜色(Jtable)

JTable里怎么得到修改后单元格里的值

如何使 JTable 单元格不可编辑但应该能够选择和复制当前单元格中的值