2016-12-08 6 views
0

Мне нужно динамически добавлять элементы при нажатии списка в Gwt. Какой обработчик мне нужно использовать? Позже я смогу использовать addChangeHandler, когда элементы будут добавлены в список. Если я использую обработчик кликов для добавления элементов в список, элементы добавляются в список. Но при щелчке списка, элементы списка не перечислены. Список контактов закрывается сразу после щелчка. Как решить эту проблемуКак добавить элементы динамически в поле списка в GWT

ответ

1

Вот простой код, демонстрирующий, как добавлять элементы в ListBox.

Вы должны понять некоторые вещи первыми:

  • ClickEvent обжигает когда нажатие на ListBox: первый, когда вы нажимаете, чтобы отобразить список и вторым при нажатии кнопки для выбора пункта;
  • ChangeEvent уволен при изменении выбранного элемента - вы не можете использовать его для отслеживания изменения самого списка элементов;

public class ListBoxTest implements EntryPoint { 

    private TextArea log = new TextArea(); 
    private ListBox listBox = new ListBox(); 
    private int i; 

    @Override 
    public void onModuleLoad() { 
     for(int j = 0; j < 5; j++) 
      listBox.addItem("item " + i++); 

     listBox.addClickHandler(new ClickHandler() { 
      @Override 
      public void onClick(ClickEvent event) { 
       log(event.toDebugString()); 
       for(int j = 0; j < 5; j++) 
        listBox.addItem("item " + i++); 
      } 
     }); 

     listBox.addChangeHandler(new ChangeHandler() { 
      @Override 
      public void onChange(ChangeEvent event) { 
       log(event.toDebugString()); 
      } 
     }); 

     RootPanel.get().add(listBox); 
     RootPanel.get().add(log); 
    } 

    private void log(String text) { 
     String logText = log.getText(); 
     if(!logText.isEmpty()) 
      logText+= "\n"; 

     logText+= text; 

     log.setText(logText); 
    } 
}