gpt4 book ai didi

java - 对 jtable 进行排序后,如何对列进行编号?

转载 作者:行者123 更新时间:2023-12-02 11:47:48 24 4
gpt4 key购买 nike

您好,我正在开发一个 Java 桌面结果系统 我已经成功地根据列平均值对我的 J 表进行了排序 我仍在尝试在 J 表排序后为学生提供位置,以便每个学生都能获得他或她的位置根据他或她的平均水平,这就是我到目前为止所做的......`

//Sorts j Table basing on column  average 

public void checkPosition(){
//Erases column s/no
jTable1.getColumnModel().getColumn(0).setMinWidth(0);
jTable1.getColumnModel().getColumn(0).setMaxWidth(0);
jTable1.getColumnModel().getColumn(0).setWidth(0);

TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(jTable1.getModel());
jTable1.setRowSorter(sorter);

List<RowSorter.SortKey> sortKeys = new ArrayList<>(2000);
sortKeys.add(new RowSorter.SortKey(jTable1.getColumnCount()-2, SortOrder.DESCENDING));

//sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
sorter.setSortKeys(sortKeys);
positionInsert();
}

public void positionInsert(){
//Inserts position at last column "position"
int pos=1;
for(int g=0; g<jTable1.getRowCount(); g++){
DefaultTableModel model = (DefaultTableModel)jTable1.getModel();
model.setValueAt(pos, g, jTable1.getColumnCount()-1);
pos++;
}
}

但是仍然不起作用,位置仍然有问题Screenshot of j table

该表格可以在上面的链接中看到,我的英语不是很好,但非常感谢您的帮助,谢谢

最佳答案

对表格进行排序时,表格模型中的数据不会改变,只会改变数据在表格中显示的顺序。

  DefaultTableModel model = (DefaultTableModel)jTable1.getModel(); 
model.setValueAt(pos, g, jTable1.getColumnCount()-1);

上面的代码假设模型中的数据与表中的数据顺序相同,当您对表进行排序时,这是错误的。

您需要通过表更新模型中的数据:

  table.setValueAt(pos, g, jTable1.getColumnCount()-1);

表现在会在更新模型之前将表的行转换为模型的行。

或者,如果您想直接更新模型,则您负责将表行转换为模型行。这是通过使用 JTable 的 convertViewToModel(...) 方法来完成的。

关于java - 对 jtable 进行排序后,如何对列进行编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48079667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com