【发布时间】:2016-07-15 22:58:32
【问题描述】:
我在我的 Java 项目中使用 Firebase,我添加了一个侦听器来查询数据,然后将元素添加到 DefaultListModel 但 JList 仅删除旧项目并且不显示新数据。
我的JList
usersData = new DefaultListModel<>();
JList<String> users = new JList<>(usersData);
users.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
users.setSelectedIndex(0);
users.setVisibleRowCount(5);
JScrollPane fruitListScrollPane = new JScrollPane(users);
add(fruitListScrollPane, BorderLayout.SOUTH);
和我的 firebase 值监听器
firebaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
// remove all old elements from DefaultListModel
usersData.removeAllElements();
// get the data from snapshot
for (DataSnapshot userSnapshot : snapshot.getChildren()) {
User user = userSnapshot.getValue(User.class);
String userInfo = "Username: " + user.getUsername() + " & Password: " + user.getPassword();
// add the info to the model
usersData.addElement(userInfo);
// print the info
System.out.println(userInfo);
}
}
@Override
public void onCancelled(FirebaseError error) {
}
});
【问题讨论】:
-
所以
usersData.removeAllElements()被执行了?但是你永远不会进入for循环? -
不,它会在控制台中输入并打印
userInfo字符串,问题是在我将新元素添加到 DefaultListModelusersData后,JList没有得到更新