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的差多了。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值