GWT- Suggestbox监听器无法正常工作

时间:2013-10-25 20:38:46

标签: java gwt handler suggestbox

我需要添加一个处理程序,当选择为CLICKED时将触发该处理程序,然后验证该值。当前功能正在从建议箱中记录整个值之前验证(通过模糊时的textInput),因此不会通过验证(当它应该时)。

以下是我在TextInput页面中实现suggestbox的地方:

public void onModuleLoad() {

SuggestBox box = new SuggestBox(createListOracle(),myTextBox());

box.addSelectionHandler(new SelectionHandler<Suggestion>() {

    @Override
    public void onSelection(SelectionEvent<Suggestion> event) {
        Validate();
    }
});

另一种解决方案可能是在选择建议箱时将焦点插入焦点,这对我来说也是如此。

问题是处理程序永远不会解雇。永远不会达到断点。

2 个答案:

答案 0 :(得分:4)

然后看一下ValueBoxBase。

您将自己的实例传递给SuggestBox的构造函数

public SuggestBox(SuggestOracle oracle,ValueBoxBase box)

TextBox是ValueBoxBase的子类,它具有ClickListeners,因此您可以选择:

  1. 在外面创建TextBox并添加它的监听器,然后将其传递给构造函数SuggestBox(SuggestOracle oracle,ValueBoxBase box)
  2. 重写SuggestBox并使构造函数采用“更好”的ValueBoxBase(例如TextBox)并将侦听器方法添加到您的implmentation
  3. 我试过这个样本,它可以正常工作

            TextBox suggestTextBox = new TextBox();
        suggestTextBox.addClickHandler(new ClickHandler() {
    
            @Override
            public void onClick(ClickEvent event) {
                Window.alert("tada");
            }
        });
        SuggestOracle oracle = new MultiWordSuggestOracle(" ,");
    
        final SuggestBox nameField = new SuggestBox(oracle, suggestTextBox);
    

答案 1 :(得分:0)

您还可以使用高级建议框https://code.google.com/p/advanced-suggest-select-box/

可让您控制事件:您可以覆盖valueSelected()或valueTyped()并决定是否验证它。

lib的演示就在这里 http://1vu-widgets.appspot.com/IntoGwt.html

相关问题