gpt4 book ai didi

java - 对 JTable 中行的引用

转载 作者:行者123 更新时间:2023-11-30 03:24:40 24 4
gpt4 key购买 nike

JTable 存储可以动态添加、删除、打乱顺序的行。在我的实现行中代表 Download ,通过传递名为 id 的唯一属性之一的值,可以动态更新其进度。 。但我如何映射id与实际行?

迭代列并不是有效的方法。有什么办法动态同步Hashmap<ID,Object[]>JTable ,这样给定一个键我就可以更新相应的行,反之亦然?

private dftTasks=new DefaultTableModel();
public void addTask(String type, String name, int progress, int sessionID) {
Object[] rowData={type,name,new Integer(progress),new Integer(sessionID)};
dftTasks.addRow(rowData);
}

public void updateProgress(int sessionID, int progress) {
int i = dftTasks.getRow(sessionID); //<--alternative to this method
dftTasks.setValueAt(new Integer(progress), i, 2); //2nd column=Progress
}

最佳答案

  1. 创建一个类来封装数据(例如typenameprogressid)。
  2. 将 (1) 的实例存储在 List 中,如有必要,还可以存储任何其他数据结构以便快速访问(例如,通过 id 键控的 Map)。此List 的顺序是表的行顺序。
  3. 扩展 AbstractTableModel,并实现必要的方法,根据行/列从 (1) 和 (2) 的 List 返回值。
  4. 当 (2) 中的实例值发生更改(例如,更新进度)时,从 (3) 中的实现中调用 fireXXX(DefaultTableModel 的源代码是一个很好的示例,说明了如何这就完成了)

关于java - 对 JTable 中行的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30558810/

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