0

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

1 回答 1

2

请注意,模型和视图索引是等价的。如此处所述,

JTable提供从模型坐标转换为视图坐标的方法 -convertColumnIndexToViewconvertRowIndexToView- 以及从视图坐标转换为模型坐标的方法 -convertColumnIndexToModelconvertRowIndexToModel.

教程部分讨论了排序和过滤行,但该原则也适用于列。没有完整的例子,很难确定。

于 2013-04-24T11:59:33.997 回答