Sorting JTable+排序列,但行未排序
我已经创建了一个JTable,该表包含4行,对于一个特定的行,我已经覆盖了排序,并且它只在该列上正常工作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 对于我尝
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];我只是在做那个列,缺少其他列,我如何获得整行并相应地发送数据?是否值得在新列和旧列之间进行比较并交换行,如果是,我将如何在向量上执行交换,正常的两个循环应该这样做?