У меня есть программа, разработанная как MVC-шаблон, где моя модель расширяет AbstractListModel.Когда я добавляю нового пользователя в мою модель, используйте следующий код:
public synchronized void addUser(User u) {
if (!users.contains(u)) {
users.add(u);
Collections.sort(users);
//fire
fireIntervalAdded(ListDataEvent.INTERVAL_ADDED, getSize(), getSize());
}
}
И иногда он работает нормально.Но JList не всегда обновляется.Иногда это работает, а иногда нет ... Любая подсказка?И конечно, пользователи, которых я добавляю, всегда добавляются в модель, но что-то не так с fireIntervalAdded / JList
РЕДАКТИРОВАТЬ: если я изменяю код на следующее:
public void addUser(final User u) {
if (!users.contains(u)) {
users.add(u);
Collections.sort(users);
}
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
fireIntervalAdded(this, getSize(), getSize());
}
});
}
это работает отлично.Так что проблема была в том, что не EDT сделал огонь.Спасибо!Теперь я перепишу его, так что это будет хороший код.