JTable Edit / UnEdit代码不适用于重新安排的JTable列

时间:2013-04-24 07:35:51

标签: java swing jtable tablecolumn

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

1 个答案:

答案 0 :(得分:2)

请注意,模型和视图索引不等于。如上所述here

  

JTable提供了从模型坐标转换为视图坐标的方法 - convertColumnIndexToViewconvertRowIndexToView - 并且可以从视图坐标转换为模型坐标 - convertColumnIndexToModel和{{1 }}

教程部分讨论Sorting and Filtering行,但该原则也适用于列。没有complete example,很难确定。