我正在尝试实施一个AbstractTableModel
对于名为“clients”的集合,但我不断收到“add”方法的错误“所需变量找到值”。
这是我的代码:
对于造成的混乱,我深表歉意。 add 方法的目的是在表中添加一个新的客户端(我的意思是一个新行)。我不想向集合中添加新客户。
class ModelTabel extends AbstractTableModel{
public int getRowCount() {
return clients.size();
}
public int getColumnCount() {
return 4;
}
public Object getValueAt(int row, int column) {
Client c = clients.get(row-1);
switch(column){
case 0: return c.getName();
case 1: return c.getSurname();
case 2: return c.getID();
case 3: return c.getPhone();
default:return "ERROR";
}
}
public void add(Client c) {
clients.get(clients.size()++) = a;
fireTableDataChanged();
}
}
你不能++
方法的返回值,因为参数++
必须是作业左侧有效的内容。如果你想在 a 的末尾添加一些东西Collection
那么正确的方法是使用add
method.
clients.add(a);
此外,您应该触发一个更具体的修改事件,而不仅仅是“表已更改”。呼唤fireTableDataChanged
本质上是告诉听众“这个模型中的数据已经变得无法识别,扔掉当前的视觉表示并构建一个全新的视觉表示”。如果您使用的话,它会更加高效并提供更好的用户体验
fireTableRowsInserted(clients.size() - 1, clients.size() - 1);
其中特别指出“该模型的末尾添加了一个新行,但其余数据保持不变”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)