0

我正在使用 glazedlists 进行自动完成,但我想在这一点上问一些问题。我有一个用于好友列表的数组列表。可以通过单击添加或删除按钮将人员添加到好友列表或从好友列表中删除。好友列表的数据写入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的异常。

4

1 回答 1

0

EventList 的主要优点是,一旦它被初始化,您只需向它添加对象以及观察该数据的所有内容,例如,由于 GlazedLists 提供的所有管道,ComboBox 将神奇地更新。

因此,将 移动为EventList实例变量:

private EventList<Object> eventList = new BasicList<Object>();

searchBox在创建和设置后执行 AutoCompleteSupport 一次。

然后,当您需要添加项目时调用eventList.addAll(...). 不要重新实例化该列表,也不要在每次要进行更新时重新实例化 searchBox。使用事件列表添加/删除,其余的将自动跟随。

于 2013-03-05T11:14:35.587 回答