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

标签 java swing jtable tablecolumn

我使用以下代码对 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);
}
}

最佳答案

请注意,模型索引和 View 索引等效。如前所述here ,

JTable provides methods that convert from model coordinates to view coordinates — convertColumnIndexToView and convertRowIndexToView — and that convert from view coordinates to model coordinates — convertColumnIndexToModel and convertRowIndexToModel.

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

关于java - JTable 编辑/取消编辑代码不适用于重新排列的 JTable 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16186113/

相关文章:

java - 将字符串二进制转换为整数 Java

java - 如何在 JComboBox(actionPerformed)中输入时触发 Java Swing InputVerifier?

Java 动画旋转

java - TableCellRenderer 工作正常,表格排序正常,但不重新绘制

java - 如何获取 JTable 单元格内文本所占的确切空间?

java - 如何使用 MongoDB 3.0 java 驱动程序执行聚合

java - 如何使 IntelliJ Idea 仅显示编译器生成的警告并抑制智能检查?

java - 有哪些资源可以教我如何使用 Java 中的 Web 服务?

java - 如何在netbeans中隐藏Jtable?

java - 我怎样才能阻止程序第二次跳过我的检查?