Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting JTable+排序列,但行未排序_Sorting_Jtable - Fatal编程技术网

Sorting JTable+排序列,但行未排序

Sorting JTable+排序列,但行未排序,sorting,jtable,Sorting,Jtable,我已经创建了一个JTable,该表包含4行,对于一个特定的行,我已经覆盖了排序,并且它只在该列上正常工作 Status Scheduled Date Scheduled time Status false 30/01/2012 02:00:00 Scheduled false 29/01/2012 14:58:00 Scheduled false 29/01/2012 15:50:00 Scheduled 对于我尝

我已经创建了一个JTable,该表包含4行,对于一个特定的行,我已经覆盖了排序,并且它只在该列上正常工作

Status  Scheduled Date  Scheduled time  Status          
false   30/01/2012  02:00:00    Scheduled   
false   29/01/2012  14:58:00    Scheduled   
false   29/01/2012  15:50:00    Scheduled   
对于我尝试排序的预定日期,它将进行排序,但respectve行不会被更新

这是我的分类代码

public static void sortColumn(DefaultTableModel model, int colIndex,
            boolean sortingOrder) {

        Vector<?> data = model.getDataVector();
        Object[] colData = new Object[model.getRowCount()];
        SortedSet<Object> dataCollected = null;
        List<Date> dateCollected;
        boolean dateFlag = false;

        dateCollected = new ArrayList<Date>();

        // Copy the column data in an array
        for (int i = 0; i < colData.length; i++) {

            Object tempData = ((Vector<?>) data.get(i)).get(colIndex);

            if ((colIndex == 1 || colIndex == 4)
                    && tempData.toString().contains("/")) {
                String[] _scheduledDate1 = ((String) tempData).split("/");
                Calendar _cal1 = Calendar.getInstance();
                _cal1.set(Integer.parseInt(_scheduledDate1[2]),
                        Integer.parseInt(_scheduledDate1[1]) - 1,
                        Integer.parseInt(_scheduledDate1[0]));

                dateCollected.add(_cal1.getTime());
                dateFlag = true;
            } else {
                colData[i] = ((Vector<?>) data.get(i)).get(colIndex);
            }
        }

        // DateCompare compare = new DateCompare();
        if (!dateFlag) {
            dataCollected = new TreeSet<Object>();

            dataCollected.add(colData);

            dateFlag = false;
        }

        // Copy the sorted values back into the table model
        if ((colIndex == 1 || colIndex == 4) && dateFlag) {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            sortOrder = !sortOrder;

            if (sortOrder) {
                Collections.sort(dateCollected);
            } else {
                Collections.sort(dateCollected, Collections.reverseOrder());
            }

            colData = dateCollected.toArray();
            for (int i = 0; i < colData.length; i++) {
                ((Vector<Object>) data.get(i)).set(colIndex,
                        sdf.format(((Date) colData[i]).getTime()));
            }
        } else {
            for (int i = 0; i < colData.length; i++) {
                ((Vector<Object>) data.get(i)).set(colIndex, colData[i]);
            }
        }

        model.fireTableStructureChanged();
    }

如何相应地更新整行?

我发现了问题,我比较的对象是错误的,我更改了相同的代码,一切正常


我实现了快速排序算法,对我需要的特定列上的向量进行排序。

我知道了需要更改的位置,但不确定如何进行更改。将数据设置回Vector data.geti.setcolIndex时,colData[i];我只是在做那个列,缺少其他列,我如何获得整行并相应地发送数据?是否值得在新列和旧列之间进行比较并交换行,如果是,我将如何在向量上执行交换,正常的两个循环应该这样做?