2013-03-04 155 views
0

我使用glazedlists自动完成,但我想问一些在这一点上。我有一个用于好友列表的数组列表。人们可以添加到好友列表中,也可以通过点击添加或删除按钮从好友列表中删除。通过使用Gson和Json,将friendlist的数据写入friend.txt并从friend.txt中读取。 当用户将人员添加到列表中或从列表中删除某人时,所选人员将从friend.txt中删除或添加到friend.txt中。自动完成与GlazedLists

... 
    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

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

因此,移动EventList是一个实例变量:

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

执行一次AutoCompleteSupport,该searchBox已创建和设置后。

然后,当您需要添加项目时请致电eventList.addAll(...)。不要重新实例化该列表,也不要在每次要更新时重新搜索该搜索框。使用事件列表添加/删除,其他事件将自动进行。