0

我希望标题不会太令人困惑。基本上,我有一个 JTable,它列出了一个目录,其中包含文件/目录名称、日期和大小等信息。当我单击 JTable 的标题时,我想按该列对表进行排序。下面的监听器适用于名称和日期,但会产生不正确的大小结果:

    fSorter = new TableRowSorter<>(table.getModel());
    table.setRowSorter(fSorter);
    table.getTableHeader().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent event) {
              int columnIdx = table.getColumnModel().getColumnIndexAtX(event.getX());

              List<RowSorter.SortKey> sortKeys = new ArrayList<>();
              SortOrder order =  SortOrder.values()[fCountClicks % 2];
              sortKeys.add(new RowSorter.SortKey(columnIdx, order));
              fSorter.setSortKeys(sortKeys);
              ++fCountClicks;
        }
    });

它不起作用的原因是我有 60 和 277284 之类的尺寸。这种排序看到 60 中的“6”并假设它大于 277284,因为它比较了“6”和“2”。有人可以建议我在这种情况下可以做什么吗?我应该创建一个自定义排序还是我可以以某种方式表明这个字符串实际上是一个整数以便它弄清楚?谢谢您的帮助!

4

0 回答 0