当其他单元格值更改时禁用 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 单元格可编辑的主要内容,如果未能解决你的问题,请参考以下文章