我在JTable Columns的Edit / UnEdit中使用以下代码,但是当用户重新排列列时,以下代码无法正常工作 代码的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);
}
}
答案 0 :(得分:2)
请注意,模型和视图索引不等于。如上所述here,
JTable
提供了从模型坐标转换为视图坐标的方法 -convertColumnIndexToView
和convertRowIndexToView
- 并且可以从视图坐标转换为模型坐标 -convertColumnIndexToModel
和{{1 }}
教程部分讨论Sorting and Filtering行,但该原则也适用于列。没有complete example,很难确定。