Autocomplete 使用glazedlist自动完成

Autocomplete 使用glazedlist自动完成,autocomplete,glazedlists,invokeandwait,Autocomplete,Glazedlists,Invokeandwait,我正在使用GlazedList自动完成,但我想在这一点上提出一些问题。我有一个朋友名单的列表。通过单击“添加”或“删除”按钮,可以将联系人添加到好友列表或从好友列表中删除。friendlist的数据通过使用Gson和Json写入friend.txt并从friend.txt读取。 当用户向列表中添加人员或从列表中删除人员时,所选人员将从friend.txt中删除或添加到friend.txt中 ... Object[] elements = new Object[holdSizeValue]

我正在使用GlazedList自动完成,但我想在这一点上提出一些问题。我有一个朋友名单的列表。通过单击“添加”或“删除”按钮,可以将联系人添加到好友列表或从好友列表中删除。friendlist的数据通过使用Gson和Json写入friend.txt并从friend.txt读取。 当用户向列表中添加人员或从列表中删除人员时,所选人员将从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);
      }
  });
  ...
。。。
Object[]elements=新对象[holdSizeValue];
for(int i=0;i

您可能从代码中了解到,我使用glazedlist进行搜索操作。我想更新元素[]。如何更新?当我从add或remove按钮的控制器调用包含上述代码的方法时,我得到一个关于invokeAndWait的异常。

事件列表的主要优点是,一旦初始化,您只需向其添加对象以及观察该数据的所有内容,例如。,由于所有管道玻璃列表提供,组合框将神奇地更新

因此,将
事件列表
移动为实例变量:

private EventList<Object> eventList = new BasicList<Object>();
private EventList EventList=new BasicList();
创建并设置
搜索框后,执行一次自动完成支持

然后,当需要添加项目时,调用
eventList.addAll(…)
。不要重新整理该列表,也不要在每次更新时重新整理搜索框。添加/删除事件列表,其余将自动跟随