0

オートコンプリートに glazedlists を使用していますが、この点について質問したいと思います。フレンドリストの配列リストがあります。追加または削除ボタンをクリックして、友達リストに追加したり、友達リストから削除したりできます。フレンドリストのデータは、Gson と Json を使用して、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);
      }
  });
  ...

コードからわかるように、検索操作には glazedlist を使用しました。要素[]を更新したいです。どうすれば更新できますか? 上記のコードを含むメソッドを追加または削除ボタンのコントローラーから呼び出すと、invokeAndWait に関する例外が発生します。

4

1 に答える 1

0

EventListの主な利点は、初期化されたら、オブジェクトを追加するだけで、そのデータを監視しているすべてのもの、たとえば、ComboBoxがGlazedListsが提供するすべての配管のおかげで魔法のように更新されることです。

したがって、EventListをインスタンス変数に移動します。

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

searchBoxを作成して設定した後、AutoCompleteSupportを1回実行します。

次に、アイテムを追加する必要がある場合は、を呼び出しますeventList.addAll(...)。そのリストを再インスタンス化しないでください。また、更新を実行するたびにsearchBoxを再インスタンス化しないでください。イベントリストを追加/削除すると、残りは自動的に続きます。

于 2013-03-05T11:14:35.587 に答える