swing jtable删除行,删除多行,排序后删除行

 

jtable删除行的问题

 

jtable排序后删除行,会出现索引不对应的问题

 

//设置列表可排序
jTable1.setAutoCreateRowSorter(true);

 

解决办法

关键代码:

//转换为Model的索引,这句很重要,否则索引不对应

rowIndexes[i] = jTable1.convertRowIndexToModel(rowIndexes[i]);

//排序,这句很重要,否则顺序是乱的
Arrays.sort(rowIndexes);

 

private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {                                          
        int[] rowIndexes = jTable1.getSelectedRows();
        
        if(rowIndexes.length == 0){
            JOptionPane.showMessageDialog(null, "请选择行后再删除!");
            return;
        }
        
        int r = JOptionPane.showConfirmDialog(null,
                "你确定要删除吗?", "确认删除",
                JOptionPane.YES_NO_OPTION,
                JOptionPane.QUESTION_MESSAGE);
        if (r != JOptionPane.YES_OPTION) {
            return;
        }

        for (int i = 0; i < rowIndexes.length; i++)
        {
           //转换为Model的索引,这句很重要,否则索引不对应
            rowIndexes[i] = jTable1.convertRowIndexToModel(rowIndexes[i]);
        }
        //排序,这句很重要,否则顺序是乱的
        Arrays.sort(rowIndexes);
        
        DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel();
        //降序删除
        for(int i=rowIndexes.length-1; i>=0; i--){
            tableModel.removeRow(rowIndexes[i]);
            //与Model对应的列表数据,含有更多元数据
            //MainFrame.resultList.remove(rowIndexes[i]);
        }

    } 

 

网上很多人写的删除方法都不涉及表格排序,涉及表格排序的转换索引后又不排序,

真心感觉jtable的操作太麻烦了,比winform的差多了。

 

你可能感兴趣的:(排序,swing,删除,索引,jtable)