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
}
答案 0 :(得分:1)
type
,name
,progress
和id
)。 List
中,并在必要时存储任何其他数据结构以便快速访问(例如,由id键入的Map
。此List
的顺序是表的行顺序。 AbstractTableModel
,并根据行/列实现必要的方法以从(1)和(2)返回List
的值。 DefaultTableModel
的来源是如何完成此操作的一个很好的示例)答案 1 :(得分:1)
您刚回答了自己的问题 - 使用HashMap:
public static void ReadCallback(IAsyncResult ar)
{
if("<EOF>")
{
foreach(var h in _handlers)
{
Send(h,data);
}
}
}
要反过来并听取更改,请使用TableModelListener来监听更改,