我正在尝试为名为“clients”的集合实现一个 AbstractTableModel
,但我不断收到“add”方法的错误“requiredvariablefoundvalue”。
这是我的代码:
对于造成的困惑,我深表歉意。 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();
}
}
最佳答案
您不能 ++
方法的返回值,因为 ++
的参数必须是在方法左侧有效的内容任务。如果您想在 Collection
末尾添加某些内容,那么正确的方法是使用 add
方法。
clients.add(a);
此外,您应该触发一个更具体的修改事件,而不仅仅是“表已更改”。调用 fireTableDataChanged
本质上是告诉听众“此模型中的数据已更改得无法识别,丢弃当前的视觉表示并构建一个全新的视觉表示”。如果您使用它,它会更加高效并提供更好的用户体验
fireTableRowsInserted(clients.size() - 1, clients.size() - 1);
其中明确表示“已在该模型的末尾添加了一个新行,但其余数据未更改”。
关于java - 为 Java 集合实现 AbstractTableModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20683502/