Java自定义AbstractTableModel不';t更新JTable上的值,直到窗口/JTable调整大小

Java自定义AbstractTableModel不';t更新JTable上的值,直到窗口/JTable调整大小,java,swing,jtable,abstracttablemodel,Java,Swing,Jtable,Abstracttablemodel,所以我有我的AbstractTableModel: public class ClientTableModel extends AbstractTableModel { private String[] columns = new String [] { "UserNames", "Passwords" }; @Override public int getRowCount() { return ServerManager.instance.allClients.si

所以我有我的AbstractTableModel:

public class ClientTableModel extends AbstractTableModel {

private String[] columns = new String [] {
        "UserNames", "Passwords"
};

@Override
public int getRowCount() {
    return ServerManager.instance.allClients.size();
}

@Override
public int getColumnCount() {
    return columns.length;
}

@Override
public Class<?> getColumnClass(int columnIndex) {
    return String.class;
}

@Override
public String getColumnName(int column) {
    return columns[column];
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
    Object value = "";
    Client client = ServerManager.instance.allClients.get(rowIndex);
    switch (columnIndex) {
        case 0:
            value = client.CLIENT_USERNAME;
            break;
        case 1:
            value = client.CLIENT_PASSWORD;
            break;
    }
    return value;
}
}
公共类ClientTableModel扩展了AbstractTableModel{
私有字符串[]列=新字符串[]{
“用户名”、“密码”
};
@凌驾
public int getRowCount(){
返回ServerManager.instance.allClients.size();
}
@凌驾
public int getColumnCount(){
返回列的长度;
}
@凌驾
公共类getColumnClass(int columnIndex){
返回字符串.class;
}
@凌驾
公共字符串getColumnName(int列){
返回列[列];
}
@凌驾
公共对象getValueAt(int行索引、int列索引){
对象值=”;
Client Client=ServerManager.instance.allClients.get(rowIndex);
开关(列索引){
案例0:
值=client.client\u用户名;
打破
案例1:
值=client.client\u密码;
打破
}
返回值;
}
}
当我用新客户端更新“AllClient”时,除非我调整JTable的大小,否则不会显示带有新客户端的JTable行


我想知道JTable是否可以使用新的客户端行进行更新,而不必手动调整窗口大小以查看新的客户端。

我没有看到您的模型的
addRow(…)
方法,但我猜您正在向表模型的数据核心添加数据,ServerManager.instance.allClients在不触发任何表模型通知方法的情况下启动。如果是这样,不要这样做。模型的核心应该是模型本身的一部分,无论何时添加、删除或更改数据,都必须调用fireXxxx(…)通知方法。例如,每当您添加一行数据时,您必须在模型中调用
fireTableRowsInserted(…)
,以便它通知显示它的任何表。

只是尝试重新绘制JTable,但并没有解决问题。为了更快地获得更好的帮助,请发布(最小完整可验证示例)或(简短、自包含、正确的示例)。