我正在为我的JTable列使用以下代码进行编辑/取消编辑,但是当用户重新排列列时,以下代码不起作用,代码的SSCCE如下:
import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; public class Main { public static void main(String[] argv) throws Exception { TableModel model = new DefaultTableModel() { public boolean isCellEditable(int rowIndex, int mColIndex) { boolean flag = false; if (isEdit == true) { if ((vColIndex == tblItem.getColumn("Design").getModelIndex()) || (vColIndex == tblItem.getColumn("ChangedCategory").getModelIndex()) || (vColIndex == tblItem.getColumn("Amount").getModelIndex())) { flag = false; } else { flag = true; } } else { flag = false; } return flag; } }; JTable table2 = new JTable(model); } }
请注意,模型索引和视图索引 不 相等。如前所述这里,
JTable提供了从模型坐标转换为视图坐标- convertColumnIndexToView和convertRowIndexToView-的方法,以及从视图坐标转换为模型坐标- convertColumnIndexToModel和的方法convertRowIndexToModel。
JTable
convertColumnIndexToView
convertRowIndexToView
convertColumnIndexToModel
convertRowIndexToModel
本教程部分讨论了 对 行进行 排序和过滤 ,但是原理也适用于列。没有完整的示例,很难确定。