Как я могу удалить несколько столбцов из Jtable в Java?

Мне нужно удалить 2 столбца из Jtable.

Если я сделаю:

try { 
jTable5.setModel(dtm);
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5));
jTable5.removeColumn(jTable5.getColumnModel().getColumn(6));
jTable5.setVisible(true);
} 
catch (Exception e){
JOptionPane.showMessageDialog(rootPane, "Error");
}

Затем отображается "Ошибка".

Но если я сделаю:

try { 
jTable5.setModel(dtm);
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5));
jTable5.setVisible(true);
} 
catch (Exception e){
JOptionPane.showMessageDialog(rootPane, "Error");
}

Ошибка не отображается, и таблица настроена на отображение правильно. Кажется, я не могу удалить два столбца из модели, используя removeColumn() метод дважды.

Я заметил, что есть removeColumnSelectionInterval(), я должен использовать этот?

Есть идеи?

2 ответа

Я предполагаю, что у вас есть 7 столбцов и удаление их по индексу. Когда убрано число индексов -1, вы не можете использовать значение индекса больше размера. Изменить на

jTable5.removeColumn(jTable5.getColumnModel().getColumn(6));
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5));

Во -первых, вы должны использовать исключение, а не просто показывать "ошибка", показывать e.getMessage(),

try { 
jTable5.setModel(dtm);
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5));
jTable5.removeColumn(jTable5.getColumnModel().getColumn(6));
jTable5.setVisible(true);
} 
catch (Exception e){
JOptionPane.showMessageDialog(rootPane, "Error " + e.getMessage());
e.printStackTrace();//shows more detailed stack trace
}

и использовать e.printStackTrace()...

Во-вторых, я думаю, что когда вы удаляете первый столбец, тогда другие столбцы сдвигаются, поэтому, когда вы удаляете столбец 5, тогда столбца 6 нет, потому что он был смещен, и теперь его тоже 5, вот что вызывает ошибку,

так что дикое предположение заключается в использовании

jTable5.removeColumn(jTable5.getColumnModel().getColumn(5));
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5));

да, удалите 5 дважды.

Другие вопросы по тегам