如何动态添加项目到GWT中的列表框

时间:2016-12-08 14:39:23

标签: gwt

我需要在点击Gwt中的列表框时动态添加项目。我需要使用哪个处理程序? 稍后,一旦将项目添加到列表框,我将能够使用addChangeHandler。 如果我使用单击处理程序将项目添加到列表框,则项目将添加到列表框中。但是单击列表框时,列表框项目未列出。单击列表框会立即关闭它。 如何解决此问题

1 个答案:

答案 0 :(得分: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);
    }
}