如何在 Jython 中将 JTable 的某些列设置为可编辑/不可编辑?
我的桌子:
self.table_data = []
data_model = DefaultTableModel(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)
您可以通过扩展 DefaultTableModel 类的 isCellEditable 方法,使用 Jython 来完成此操作:
from javax.swing.table import DefaultTableModel
class CustomTableModel(DefaultTableModel):
def isCellEditable(self, row, column):
# Make column with index 1 (first column) uneditable
if column == 1:
return False
return True
data_model = CustomTableModel(self.table_data, self.colnames)
self.table.setModel(data_model)
在此示例中,除第 1 列之外的所有列都可以编辑,当然,可以针对任何特定单元格或列细化 isCellEdited 逻辑。只需使用
if
和 elif
语句来设置条件,如果单元格可编辑,则返回 True
;如果单元格不可编辑,则返回 False
。最后,如果不满足任何条件,则设置默认返回 True
或 False
。