小编典典

JTable编辑/取消编辑代码不适用于重新排列的JTable列

java

我正在为我的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);
}
}

阅读 229

收藏
2020-11-30

共1个答案

小编典典

请注意,模型索引和视图索引
相等。如前所述这里

JTable提供了从模型坐标转换为视图坐标-
convertColumnIndexToViewconvertRowIndexToView-的方法,以及从视图坐标转换为模型坐标-
convertColumnIndexToModel和的方法convertRowIndexToModel

本教程部分讨论了

行进行
排序和过滤

,但是原理也适用于列。没有完整的示例,很难确定。

2020-11-30