Как я могу удалить несколько столбцов из 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 дважды.