You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jython中设置JTable指定列的可编辑/不可编辑属性

在Jython中设置JTable列的可编辑状态

要控制JTable中哪些列可编辑,核心是修改其TableModel的单元格编辑规则——JTable本身不决定单元格是否可编辑,这个逻辑由它绑定的TableModel负责。DefaultTableModel默认所有单元格都可编辑,所以我们需要自定义一个继承自它的子类,重写isCellEditable方法来实现列级的编辑控制。

步骤1:自定义TableModel类

创建继承自DefaultTableModel的子类,重写isCellEditable(int row, int column)方法,根据列索引指定编辑权限:

class CustomTableModel(DefaultTableModel):
    # 定义不可编辑的列索引集合,示例为第0列和第2列
    NON_EDITABLE_COLUMNS = {0, 2}

    def isCellEditable(self, row, column):
        # 列索引不在不可编辑集合中则允许编辑
        return column not in self.NON_EDITABLE_COLUMNS

步骤2:替换原有TableModel实例

将你代码中的DefaultTableModel替换为自定义的模型:

self.table_data = []
# 使用自定义模型替代默认模型
data_model = CustomTableModel(self.table_data, self.colnames)
self.table = JTable(data_model)

self.table_pane = JScrollPane()
self.table_pane.setPreferredSize(Dimension(480,370))
self.table_pane.getViewport().setView(self.table)

灵活调整编辑规则

如果需要动态调整或添加更复杂的判断逻辑,直接修改isCellEditable方法即可:

  • 仅允许第1列可编辑:return column == 1
  • 奇数行的第0列不可编辑:return not (column == 0 and row % 2 != 0)

内容的提问来源于stack exchange,提问作者co3next

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 11:02:34