Как удалить выбранные строки из JTable? - PullRequest
14 голосов
/ 17 марта 2009

Я пробовал это:

public void removeSelectedFromTable(JTable from)
{
    int[] rows = from.getSelectedRows();
    TableModel tm= from.getModel();

    while(rows.length>0)
    {
        ((DefaultTableModel)tm).removeRow(from.convertRowIndexToModel(rows[0]));

        rows = from.getSelectedRows();
    }
    from.clearSelection();
}

Но иногда он остается там. В чем может быть проблема?

Ответы [ 17 ]

0 голосов
/ 10 января 2016

Проснулся для меня. Введите код

public void removeSelectedFromTable(JTable from)
    {
        int[] rows = from.getSelectedRows();
        DefaultTableModel tm = (DefaultTableModel) from.getModel();
        for (int i = rows.length-1; i >= 0; i--) {
            tm.removeRow(rows[i]);
        }
}
0 голосов
/ 26 декабря 2016

Код ниже будет работать:

do {
    ((DefaultTableModel) jXTable1.getModel()).removeRow(jXTable1.getSelectedRows()[0]);
} while (jXTable1.getSelectedRowCount() > 0);
0 голосов
/ 28 июля 2015

приватная пустота DefaultTableModel defaultModel = (DefaultTableModel) jTable1.getModel (); Vector newRow = new Vector (); defaultModel.removeRow (jTable1.getSelectedRow ()); i = i - 1; }

0 голосов
/ 09 декабря 2014

Попробуйте это:

int selectedIndex = table_.getSelectedRow();
while (selectedIndex >= 0) {
    int modelIndex = table_.convertRowIndexToModel(selectedIndex);
    tableModel_.removeRow(modelIndex);

    selectedIndex = table_.getSelectedRow();
}
0 голосов
/ 12 марта 2012

Это решение работает с сортировкой заголовка и автоматически обновляет таблицу (т. Е. Его не нужно перебирать).

Функция Collecions.sort в обратном порядке позволяет избежать исключения IndexOutOfBondException.

private void deleteSelectedRows() {
        int[] selectedRows = table.getSelectedRows();
        table.clearSelection();

        // get model rows
        List<Integer> selectedModelRows = new LinkedList<Integer>();
        for (int i =`enter code here` 0; i < selectedRows.length; i++) {
            selectedModelRows.add(table.convertRowIndexToModel(selectedRows[i]));
        }

        Collections.sort(selectedModelRows, Collections.reverseOrder());

        for (int selectedModelRow : selectedModelRows) {
            tableModel.removeRow(selectedModelRow);
            tableModel.fireTableRowsDeleted(selectedModelRow, selectedModelRow);
        }
}
0 голосов
/ 29 марта 2013

Этот код работает для меня!

DefaultTableModel model = (DefaultTableModel) Table.getModel();
    int nbrrow=Table.getRowCount();

        if(nbrrow>=1){
            int[] rows = Table.getSelectedRows();
            if(rows.length>=1){
            if(Table.getModel().isCellEditable(Table.getSelectedRow(),Table.getSelectedColumn())
                       &&Table.isEditing()==true)
               {
                   Table.getCellEditor().stopCellEditing();
                    for(int i=0;i<rows.length;i++){ 
                     model.removeRow(rows[i]-i);
                   }
               }else{
                            for(int i=0;i<rows.length;i++){ 
                             model.removeRow(rows[i]-i);
                           }

                }
            for(int i=0;i<Table.getRowCount();i++){
                           model.setValueAt(i, i, 0);
                       }
              Table.revalidate();
              Table.repaint();
            }
        }
0 голосов
/ 06 февраля 2014

Попробуйте это

    public void removeSelectedFromTable(JTable table) {

        DefaultTableModel model = (DefaultTableModel) table.getModel();
        int indexes[] = table.getSelectedRows(); 
        int res = 0;
        for(int i = 0; i < indexes.length; i++) {
            res += (i>0)?(indexes[i]-indexes[i-1]-1):0;
            int index = table.convertRowIndexToModel(indexes[0]+res)
            model.removeRow(index);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...