我使用以下代码对 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);
}
}
请注意,模型和视图索引是not相等的。如前所述here http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting,
JTable
提供从模型坐标转换为视图坐标的方法 -convertColumnIndexToView
and convertRowIndexToView
- 并将视图坐标转换为模型坐标 -convertColumnIndexToModel
and convertRowIndexToModel
.
教程部分讨论排序和过滤 http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting行,但该原则也适用于列。缺席完整的例子 http://sscce.org/,很难确定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)