相关疑难解决方法(0)

无法将列比较器设置为JTable

在另一个线程中,我找到了这个比较器(post的底部),用于对JTable列进行排序,这些列可以由整数,字符串或两者组成.我无法弄清楚如何将它应用于我的JTable.我的表之前使用的是自动创建的行排序器.我将其设置为false,我现在正在使用:

TableRowSorter<MyTableModel> rowSorter = new TableRowSorter<MyTableModel>();
jtable.setRowSorter(rowSorter);
rowSorter.setComparator(0, c1);
Run Code Online (Sandbox Code Playgroud)

我得到一个索引超出范围的例外,说我提供的无效范围.我的表有多列.这是应用比较器的正确方法吗?我觉得这不是这样做的方法.

Comparator c1 = new java.util.Comparator() {
    /**
     * Custom compare to sort numbers as numbers.
     * Strings as strings, with numbers ordered before strings.
     * 
     * @param o1
     * @param o2
     * @return
     */
@Override
            public int compare(Object oo1, Object oo2) {
                boolean isFirstNumeric, isSecondNumeric;
                String o1 = oo1.toString(), o2 = oo2.toString();


        isFirstNumeric = o1.matches("\\d+");
        isSecondNumeric = o2.matches("\\d+");

        if (isFirstNumeric) {
            if (isSecondNumeric) {
                return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
            } else {
                return …
Run Code Online (Sandbox Code Playgroud)

java swing jtable comparator tablerowsorter

2
推荐指数
1
解决办法
7337
查看次数

标签 统计

comparator ×1

java ×1

jtable ×1

swing ×1

tablerowsorter ×1