首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示Enter键上所有选项的SuggestBox GWT

显示Enter键上所有选项的SuggestBox GWT
EN

Stack Overflow用户
提问于 2010-06-15 01:33:49
回答 3查看 5.3K关注 0票数 5

我需要创建一个SuggestBox,它将显示按Enter键时的所有选项。我已经编写了以下实现,它似乎工作得很好。我希望有人审查我的实现,并让我知道它是否会导致任何特定情况下的问题。此外,要传递给此SuggestBox的SuggestOracle应该设置默认建议,方法是调用MultiWordSuggestOracle上的setDefaultSuggestions()方法。我的SuggestBox的任何用户都应该对这一事实透明。因此,我想我需要包装(或扩展) MultiWordSuggestOracle来完成默认的建议设置。你能推荐一下做这件事的好方法吗?

代码语言:javascript
复制
public class SuggestBoxWithAllOptions extends SuggestBox implements 
    KeyPressHandler { 
    public SuggestBoxWithAllOptions(MultiWordSuggestOracle oracle) { 
            super(oracle); 
            this.addKeyPressHandler(this); 
    } 
    @Override 
    public void onKeyPress(KeyPressEvent event) { 
            char c = event.getCharCode(); 
            int i = this.getText().length(); 
    if (c == KeyboardListener.KEY_ENTER && i == 0) { 
            /* Since the query string is null, the default suggestions 
           will get listed */ 
            this.showSuggestionList(); 
     } 
    } 
   } 

  /* Code for initializing the SuggestBox */ 
            List<String> suggestions = new ArrayList<String>(); 
            suggestions.add("Tablet"); 
            suggestions.add("Capsule"); 
            MultiWordSuggestOracle myOracle = new MultiWordSuggestOracle(); 
            myOracle.addAll(suggestions ); 
            myOracle.setDefaultSuggestionsFromText(suggestions); 
            SuggestBox mySuggest = new SuggestBoxWithAllOptions(myOracle); 
EN

回答 3

Stack Overflow用户

发布于 2011-02-16 00:58:19

我觉得挺不错的。另一种方法是添加一个按钮来显示所有建议。该按钮可以设置为看起来像一个下拉框箭头。

代码语言:javascript
复制
public class DropDownSuggestBox extends Composite {

public DropDownSuggestBox(final SuggestBox suggestBox) {
    FlowPanel layout = new FlowPanel();
    final Button dropDownButton = new Button();
    dropDownButton.setStyleName("slate-DropdownIcon");
    dropDownButton.setText("Show Options");
    dropDownButton.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            suggestBox.setFocus(true);
            suggestBox.showSuggestionList();
        }
    });

    layout.add(suggestBox);
    layout.add(dropDownButton);

    initWidget(layout);

    setStylePrimaryName("slate-DropDownSuggestBox");
}

}
票数 5
EN

Stack Overflow用户

发布于 2011-05-18 00:13:30

这种方法可能会有问题,因为当你点击按钮时,建议框上的焦点就会丢失,所以在模糊上触发验证等的人可能会受到这种行为的干扰。

我推荐使用这个库,它是为现实生活中的大型应用程序创建的,因此在使用http://code.google.com/p/advanced-suggest-select-box/后,由于反馈,许多实践案例都得到了解决

对于第一个原始问题,您可以重写onkeyUp(),并为您的情况做一些特殊的事情,然后委托给super.onKeyUp()来处理所有其他问题。

希望能有所帮助,致以最好的问候,Zied

票数 2
EN

Stack Overflow用户

发布于 2015-08-06 16:25:17

@Vishal Singh

不需要扩展SuggestBox。您的代码可以使用基本的SuggestBox。

代码语言:javascript
复制
    SuggestBox mySuggest = new SuggestBox(myOracle);
    mySuggest.addKeyPressHandler(new KeyPressHandler() {
        @Override
        public void onKeyPress(KeyPressEvent event) {

        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3039436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档