【发布时间】:2014-11-02 09:24:27
【问题描述】:
我已经多次搜索并看到这个问题,但没有一个解决方案有效。
我有一个AbstractTableModel,我已经扩展并称为AccountTableModel。代码是这样的。
import InvAcntItem.Account;
import java.util.LinkedList;
import javax.swing.table.AbstractTableModel;
public class AccountTableModel extends AbstractTableModel
{
LinkedList<Account> dataList;
private String[] columnNames = {"Username", "Password"};
public AccountTableModel()
{
dataList = new LinkedList<>();
}
public void setNewAccounts(LinkedList<Account> inAccs)
{
System.out.println("Syncing local account");
LinkedList<Account> newList = new LinkedList<>();
for(int i = 0; i < inAccs.size(); i++)
newList.add(Account.getDeepCopy(inAccs.get(i)));
System.out.println("done");
this.dataList = newList;
System.out.println("set");
this.fireTableDataChanged();
System.out.println("set");
}
@Override
public int getRowCount()
{
return dataList.size();
}
@Override
public int getColumnCount()
{
return columnNames.length;
}
@Override
public Object getValueAt(int col, int row)
{
System.out.println("GetValueAt!");
Object retObj = null;
Account rowAcc = dataList.get(row);
switch(col)
{
case 0:
{
retObj = rowAcc.user;
}
break;
case 1:
{
retObj = rowAcc.pass;
}
break;
}
return retObj;
}
}
所有println 语句都已执行,但 UI 永远不会更新。我什至创建了一个按钮,单击该按钮会调用表格模型fireDataChanged 函数。
它还调用getValueAt 函数并返回良好的数据。
还有什么可以阻止表格重绘的吗?
【问题讨论】:
-
可能你没有在 EDT 线程上这样做
标签: java swing jtable abstracttablemodel