Java 对JTable中行的引用
JTable存储可以动态添加、删除、洗牌的行。在我的实现中,行表示一个Java 对JTable中行的引用,java,hashmap,jtable,Java,Hashmap,Jtable,JTable存储可以动态添加、删除、洗牌的行。在我的实现中,行表示一个下载,通过传递名为id的唯一属性之一的值,可以动态更新其进度。但是如何将id映射到实际行 迭代列不是有效的方法。是否有任何方法可以动态地将Hashmap与JTable同步,以便给定一个键,我可以更新相应的行,反之亦然 private dftTasks=new DefaultTableModel(); public void addTask(String type, String name, int progress, int
下载
,通过传递名为id
的唯一属性之一的值,可以动态更新其进度。但是如何将id
映射到实际行
迭代列不是有效的方法。是否有任何方法可以动态地将Hashmap
与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
}
private dftTasks=new DefaultTableModel();
public void addTask(字符串类型、字符串名称、int progress、int sessionID){
Object[]rowData={type,name,new Integer(progress),new Integer(sessionID)};
dftTasks.addRow(rowData);
}
public void updateProgress(int sessionID,int progress){
inti=dftTasks.getRow(sessionID)//
创建一个类来封装数据(例如类型
,名称
,进度
,以及id
)
将(1)的实例存储在列表
中,如有必要,还可以存储任何其他用于快速访问的数据结构(例如由id键入的映射)。此列表
的顺序是表的行顺序
扩展AbstractTableModel
,并实现必要的方法,根据行/列从(1)和(2)返回列表中的值
当(2)中实例的值发生变化时(例如,更新了进度),从(3)中的实现中调用fireXXX(DefaultTableModel的源代码就是一个很好的例子)
您刚刚回答了自己的问题-使用HashMap:
private dftTasks=new DefaultTableModel();
Hashmap<Integer,Object[]> map = new Hashmap<Integer,Object[]>();
public void addTask(String type, String name, int progress, int sessionID) {
Object[] rowData={type,name,new Integer(progress),new Integer(sessionID)};
map.put(progress,rowData);
dftTasks.addRow(rowData);
}
public void updateProgress(int sessionID, int progress) {
//int i = dftTasks.getRow(sessionID); //<--alternative to this method
Object[] i = map.get(sessionID);
dftTasks.setValueAt(new Integer(progress), i, 2); //2nd column=Progress
}
private dftTasks=new DefaultTableModel();
Hashmap=newHashMap();
public void addTask(字符串类型、字符串名称、int progress、int sessionID){
Object[]rowData={type,name,new Integer(progress),new Integer(sessionID)};
map.put(进度、行数据);
dftTasks.addRow(rowData);
}
public void updateProgress(int sessionID,int progress){
//int i=dftTasks.getRow(sessionID);//尝试使用并发哈希映射来存储值,至于数组,我相信有一个原子数组,并使用TableModel的自定义实现,而不是使用DefaultTableModelModern Java的[Autoboxing]()TrickaAutoboxing在基元类型和它们对应的对象包装类之间转换>,这里对象[]不是包装器..对不起,你是对的。我盲目地复制了代码的OP行,没有注意到它是错误的。现在它被修复了。