我在处理SortKeys时遇到了麻烦。 我有一个使用自定义TableModel的表。 我正在尝试使用SortKeys对表进行排序。 但是由于某种原因,我在sorter.setSortKeys(sortKeys);上出现错误sorter.setSortKeys(sortKeys); 谁能帮忙吗?

我的TableModel类是这样的:

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;
}
}

我查看了StackOverflow的其余部分,发现getColumnCount返回0,但是在我的模型中,getColumnCount肯定返回3。

我将表和排序器设置如下:

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();

谢谢你提供的所有帮助!

  ask by Eyenstein translate from so

本文未有回复,本站智能推荐:

1回复

JTable行排序器-IllegalArgumentException:无效的SortKey

有人可以帮我弄这个吗? 它一直有效,直到我更改了一些试图优化它的东西……该死! 这是我的表模型: 这就是我实现JTable的方式: 我正在触发以下异常: sorter.setSortKeys(list); 我相信这与未正确创建的TableColumnModel有关...
2回复

IllegalArgumentException:创建SpinnerListModel时无效的序列元素

我试图用一组值逐渐减小的JSpinner做一个JSpinner,所以我创建了一个函数来生成这些值,然后将100个值添加到列表中,然后尝试创建带有列表的SpinnerListModel资源。 这给出了以下错误: 以下是相关代码: 当前值的范围是2到0.013321190745751494
2回复

我在Java中为获取此IllegalArgumentException做错了什么?

我有时会在JTextArea中使用JTextArea.append()更新的异常。 有什么我可能做错了导致这种异常的事情吗? Javadoc建议该方法应该是线程安全的。
3回复

在SwingJava中获取错误-IllegalArgumentException

试图将一些秋千组件放在架子上。 这段代码可以工作到几天前。 现在它不起作用了,什么也没做。 也许有人可以告诉我这是怎么回事? 这是错误:
1回复

带有标尺的JScrollPane无效

我尝试运行Java Swing 2nd Edition 7.1.3 ScrollPaneLayout中的示例。 图像和滚动效果很好,但是标尺却没有。 这是我的代码: 如果有人可以帮助我解决此问题,我将不胜感激。
2回复

线程“AWT-EventQueue-0”中的异常java.lang.IllegalArgumentException:大小无效

我正在Netbeans的一个学校项目中工作。 试图构建一个简单的GUI面板和框架,并带有一些选项来绘制一些对象。 我开始添加一些新的文本字段和一个按钮,以使用户可以通过一些输入(例如,高度,宽度和数量)来绘制对象。 此后,程序将不再运行,它会引发异常,看起来像某种非法参数? 这是错误:
1回复

获取异常:java.lang.IllegalArgumentException:无法添加到布局:约束必须为字符串(或为null)

我正在实施浏览器类型的项目,但遇到了异常。 这是例外。
1回复

获取错误-线程“AWT-EventQueue-0”中的异常java.lang.IllegalArgumentException:文本不能为null或为空

尝试使用文本区域将字符串发送到IBM Watson。 可以通过对String进行硬编码来做到这一点。 我希望能够在JTextArea中输入自己的文本。