简体   繁体   中英

Getting IllegalArgumentException: Invalid SortKey with setSortKeys()

I'm having a bit of trouble dealing with SortKeys. I have a table which uses a custom TableModel. I'm trying to sort the table using SortKeys. For some reason, though, I am getting an error on the line sorter.setSortKeys(sortKeys); Could anyone please help?

My TableModel class is this:

class WrongAnswersTableModel extends AbstractTableModel {

private static final long serialVersionUID = 1L;

private ArrayList<Card> wrongAnswers;

public WrongAnswersTableModel(ArrayList<Card> wrongAnswers) {
    this.wrongAnswers = wrongAnswers;
}

@Override
public int getColumnCount() {
    return 3;
}

@Override
public int getRowCount() {
    return wrongAnswers.size();
}

@Override
public String getColumnName(int column) {
    String name = "";

    switch (column) {
    case 0:
        name = "Word";
        break;
    case 1:
        name = "Translation";
        break;
    case 2:
        name = "Times Incorrect";
    }

    return name;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
    Card card = wrongAnswers.get(rowIndex);
    String value = "";

    switch (columnIndex) {
    case 0:
        value = card.getLangFromPrompt();
        break;
    case 1:
        value = card.getLangToPrompt();
        break;
    case 2:
        value = "" + card.getGuessedWrong();
        break;
    }

    return value;
}
}

I looked on the rest of StackOverflow and there was something about getColumnCount returning 0, but in my model, getColumnCount definitely returns 3.

I set up my table and the sorter as follows:

List<SortKey> sortKeys = new ArrayList<SortKey>();
sortKeys.add(new SortKey(2, SortOrder.DESCENDING));     
watm = new WrongAnswersTableModel(parent.getTest().getIncorrectCards());
table = new JTable(watm);
table.setEnabled(false);
table.setRowHeight(table.getFont().getSize() + 10);
sorter = new TableRowSorter<TableModel>(table.getModel());
sorter.setSortKeys(sortKeys);
table.setRowSorter(sorter);
((AbstractTableModel) table.getModel()).fireTableDataChanged();
sorter.sort();

Thanks for any help you can give!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM