Создание нового JTable из текущего представления JTable - PullRequest
0 голосов
/ 09 мая 2011

Я работаю над проектом, включающим JTable и выполняющим над ним операции сортировки и фильтрации. Я закончил с сортировкой и фильтрацией, и теперь я хочу иметь возможность создать новую таблицу из текущего представления более старой таблицы.
например Если я применяю определенные фильтры к моей старой таблице, некоторые строки отфильтровываются. Я не хочу, чтобы эти отфильтрованные строки в моей новой таблице. Я подумал, что могу преобразовать новые индексы строк в индексы модели и вручную добавить значения ячеек в модель новой таблицы, но мне было интересно, есть ли другой эффективный способ сделать это? Вот что я в итоге сделал:

//this code block will print out the rows in current view
int newRowCount = table.getRowCount();
int newColumnCount = table.getColumnCount();
for (int i = 0; i < newRowCount; i++) {
    for (int j = 0; j < newColumnCount; j++) {
    int viewIndex = table.convertRowIndexToModel(i);
    String value = (String) model.getValueAt(viewIndex, j);
    System.out.print(value + "\t");

    }
    System.out.println();

}

1 Ответ

1 голос
/ 09 мая 2011

нет необходимости в каком-либо преобразовании индекса, просто задайте запрос к таблице вместо базовой модели

for (int i = 0; i < table.getRowCount(); i++) {
    for (int j = 0; j < table.getColumnCount(); j++) {
        Object value = table.getValueAt(i, j);
        System.out.print(value + "\t");
    }
}

Примечание: лучше переименовать i / j в строку / столбец для удобства чтения, слишком лениво ;-)

...