我正在使用glazedlists进行自动完成,但我想在这一点上问一些问题。我有一个朋友列表的arraylist。可以将人员添加到好友列表,也可以通过单击“添加”或“删除”按钮将其从好友列表中删除。 friendlist的数据写入friend.txt,并通过使用Gson和Json从friend.txt中读取。 当用户将某人添加到列表或从列表中删除某人时,所选人员将从friend.txt中删除或添加到该朋友。
...
Object[] elements = new Object[holdSizeValue];
for( int i = 0 ; i < holdSizeValue ; i++ ){
elements[i] = sendFriendNameFromList(i);
}
searchBox = new JComboBox<Object>();
final EventList<Object> eventList = GlazedLists.eventList(Arrays.asList(elements));
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
AutoCompleteSupport.install(searchBox, eventList);
}
});
...
正如您可能从代码中理解的那样,我使用glazedlist进行搜索操作。我想更新元素[]。我该如何更新?当我从添加或删除按钮的控制器调用包含上面代码的方法时,我得到一个关于invokeAndWait的异常。
答案 0 :(得分:0)
EventList的主要优点是,一旦初始化,您只需向其添加对象以及观察该数据的所有内容,例如,由于GlazedLists提供的所有管道,ComboBox将神奇地更新。
因此,将EventList
移动为实例变量:
private EventList<Object> eventList = new BasicList<Object>();
在创建并设置searchBox
后执行一次AutoCompleteSupport。
然后,当您需要添加项目时,请致电eventList.addAll(...)
。不要重新复制该列表,也不要在每次要进行更新时重新安装searchBox。使用事件列表添加/删除,其余部分将自动跟随。