所以我需要动态更新jList。我读到我必须使用fireData ....或类似的东西,具体取决于api。
我在下面的代码中使用了AbstractListModel作为jList。
/*private javax.swing.JList<String> anycast_users;*/
void set_user_model(){
anycast_users.setModel(new javax.swing.AbstractListModel<String>() {
@Override
public int getSize() {
return anycast_users_num;
}
@Override
public String getElementAt(int i) {
return anycast_users_list[i];
}
});
/*listeners and other init..*/
AbstractListNodel具有此功能
protected void fireContentsChanged(Object source,
int index0,
int index1)
所以,要更新我最初尝试的列表
anycast_users.getModel(). //in a different function (updateList())
但是当fireContentsChanged受到保护时,我无法从此处调用它。 那么,如何正确调用函数,以及需要进行哪些其他更改?
答案 0 :(得分:0)
我会在该类中创建一个方法,您可以访问该模型并进行如下操作:
public ListModel<String> getAnycastUsersModel() {
return this.anycast_users.getModel();
}
这样您就可以从任何地方访问它。 如果你能够:)我会建议你使用DefaultListModel。
答案 1 :(得分:0)
我将使用MadProgrammer建议的解决方案。
class anycastModel extends javax.swing.AbstractListModel<String>{
@Override
public int getSize() {
return anycast_users_num;
}
@Override
public String getElementAt(int i) {
return anycast_users_list[i];
}
public void updateList(){
fireContentsChanged(this, 0, anycast_users_num);
}
}
void set_usermodel(){
anycast_model=new anycastModel();
anycast_users.setModel(anycast_model);
}
更新
anycast_model.updateList();