Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在GWT SuggestBox中隐藏建议?_Gwt_Suggestbox - Fatal编程技术网

如何在GWT SuggestBox中隐藏建议?

如何在GWT SuggestBox中隐藏建议?,gwt,suggestbox,Gwt,Suggestbox,我正在使用GWT2.4。我有一个Suggestbox,在某些情况下我需要隐藏建议列表。上下文如下 在用户从建议列表中选择建议后,我将填充另外两个文本框字段,其中的值与选择对应。例如,假设suggestbox包含用户名,并且用户从建议中选择用户名,那么其他两个字段(例如用户地址和电子邮件)填充在另外两个文本框中。这两个字段现在是只读的。然后用户单击“编辑”按钮。现在用户可以编辑用户名(即在建议框中编辑)、用户地址和电子邮件。当用户编辑用户名时,再次显示建议是没有意义的,因为用户已经选择了该用户并决

我正在使用GWT2.4。我有一个Suggestbox,在某些情况下我需要隐藏建议列表。上下文如下

在用户从建议列表中选择建议后,我将填充另外两个文本框字段,其中的值与选择对应。例如,假设suggestbox包含用户名,并且用户从建议中选择用户名,那么其他两个字段(例如用户地址和电子邮件)填充在另外两个文本框中。这两个字段现在是只读的。然后用户单击“编辑”按钮。现在用户可以编辑用户名(即在建议框中编辑)、用户地址和电子邮件。当用户编辑用户名时,再次显示建议是没有意义的,因为用户已经选择了该用户并决定对其进行编辑。简而言之,我的SuggesBox应该像普通文本框一样工作。我尝试了以下代码,(我知道hideSuggestionList()已被弃用),但它不起作用

display.getSuggestBox().hideSuggestionList();
阅读javadoc for hideSuggestionList()时,会说,“不推荐使用。请改用DefaultSuggestionDisplay.hideSuggestions()。我不知道如何使用DefaultSuggestionDisplay,我正在使用SuggestBox和“MultiWordSuggestOracle”


谢谢你帮了我的忙

当用户单击“编辑”时,您可以简单地将SuggestionBox与普通文本框交换,当“编辑”关闭时,您可以将SuggestionBox与普通文本框交换。另外,如果要隐藏建议列表,它仍然会从服务器查询。通过交换小部件,您不必担心副作用。SuggestionBox本身也使用一个文本框,因此对于用户来说,它是不可见的。小部件已更改。

您可以做的只是在用户单击“编辑”时将SuggestionBox与普通文本框交换,然后在“编辑”关闭时返回。另外,如果要隐藏建议列表,它仍然会从服务器查询。通过交换小部件,您不必担心副作用。SuggestionBox本身也使用一个文本框,因此对于用户来说,它是不可见的,小部件已经更改。

以下是解决方案

我的入门课程

public class SuggestionEntryPoint implements EntryPoint {

    @Override
    public void onModuleLoad() {
        SuggestBoxWidget suggestBoxWidget = new SuggestBoxWidget();
        RootPanel rootPanel = RootPanel.get();
        suggestBoxWidget.createOracle();
        suggestBoxWidget.createWidgetAndShow(rootPanel);
        rootPanel.add(suggestBoxWidget);
        DOM.getElementById("loader").removeFromParent();
    }

}
这是我的小部件

public class SuggestBoxWidget extends Composite {

    private TextBox textSuggestBox = new TextBox();

    private SuggestBox suggestBox = null;

    DefaultSuggestionDisplay suggestionDisplay = new DefaultSuggestionDisplay();

    MultiWordSuggestOracle suggestOracle = new MultiWordSuggestOracle();

    private static SuggestBoxWidgetUiBinder uiBinder = GWT
        .create(SuggestBoxWidgetUiBinder.class);

    interface SuggestBoxWidgetUiBinder extends
        UiBinder<Widget, SuggestBoxWidget> {
    }

    public SuggestBoxWidget() {
        initWidget(uiBinder.createAndBindUi(this));     
    }

    public void registerEvents(){
        suggestBox.addKeyUpHandler(new KeyUpHandler() {
            @Override
            public void onKeyUp(KeyUpEvent event) {
                if(suggestBox.getText().equalsIgnoreCase("1")){                 
                    suggestionDisplay.hideSuggestions();
                }
            }
        });
    }

    public void createWidgetAndShow(HasWidgets container){
        suggestBox = new SuggestBox(suggestOracle,textSuggestBox,suggestionDisplay);
        container.clear();
        container.add(suggestBox);      
        registerEvents();
    }

    public void createOracle(){
        for(int i=1;i<=100;i++){
            suggestOracle.add(i+"");
        }
    }

}
公共类SuggestBoxWidget扩展复合{
私有文本框textSuggestBox=新文本框();
私有SuggestBox SuggestBox=null;
DefaultSuggestionDisplay suggestionDisplay=新建DefaultSuggestionDisplay();
MultiWordSuggestOracle suggestOracle=新的MultiWordSuggestOracle();
私有静态SuggestBoxWidgetUiBinder uiBinder=GWT
.create(SuggestBoxWidgetUiBinder.class);
接口SuggestBoxWidgetUiBinder扩展
UiBinder{
}
public SuggestBoxWidget(){
initWidget(uiBinder.createAndBindUi(this));
}
公共无效注册事件(){
addKeyUpHandler(新的KeyUpHandler(){
@凌驾
公共无效onKeyUp(KeyUpEvent事件){
if(suggestBox.getText().equalsIgnoreCase(“1”){
suggestionDisplay.hidessuggestions();
}
}
});
}
public void createWidgetAndShow(HasWidgets容器){
suggestBox=新建suggestBox(suggestOracle、textSuggestBox、SuggestDisplay);
容器。清除();
容器。添加(建议框);
registerEvents();
}
public-void-createOracle(){
对于(inti=1;i,这里是解决方案

我的入门课程

public class SuggestionEntryPoint implements EntryPoint {

    @Override
    public void onModuleLoad() {
        SuggestBoxWidget suggestBoxWidget = new SuggestBoxWidget();
        RootPanel rootPanel = RootPanel.get();
        suggestBoxWidget.createOracle();
        suggestBoxWidget.createWidgetAndShow(rootPanel);
        rootPanel.add(suggestBoxWidget);
        DOM.getElementById("loader").removeFromParent();
    }

}
这是我的小部件

public class SuggestBoxWidget extends Composite {

    private TextBox textSuggestBox = new TextBox();

    private SuggestBox suggestBox = null;

    DefaultSuggestionDisplay suggestionDisplay = new DefaultSuggestionDisplay();

    MultiWordSuggestOracle suggestOracle = new MultiWordSuggestOracle();

    private static SuggestBoxWidgetUiBinder uiBinder = GWT
        .create(SuggestBoxWidgetUiBinder.class);

    interface SuggestBoxWidgetUiBinder extends
        UiBinder<Widget, SuggestBoxWidget> {
    }

    public SuggestBoxWidget() {
        initWidget(uiBinder.createAndBindUi(this));     
    }

    public void registerEvents(){
        suggestBox.addKeyUpHandler(new KeyUpHandler() {
            @Override
            public void onKeyUp(KeyUpEvent event) {
                if(suggestBox.getText().equalsIgnoreCase("1")){                 
                    suggestionDisplay.hideSuggestions();
                }
            }
        });
    }

    public void createWidgetAndShow(HasWidgets container){
        suggestBox = new SuggestBox(suggestOracle,textSuggestBox,suggestionDisplay);
        container.clear();
        container.add(suggestBox);      
        registerEvents();
    }

    public void createOracle(){
        for(int i=1;i<=100;i++){
            suggestOracle.add(i+"");
        }
    }

}
公共类SuggestBoxWidget扩展复合{
私有文本框textSuggestBox=新文本框();
私有SuggestBox SuggestBox=null;
DefaultSuggestionDisplay suggestionDisplay=新建DefaultSuggestionDisplay();
MultiWordSuggestOracle suggestOracle=新的MultiWordSuggestOracle();
私有静态SuggestBoxWidgetUiBinder uiBinder=GWT
.create(SuggestBoxWidgetUiBinder.class);
接口SuggestBoxWidgetUiBinder扩展
UiBinder{
}
public SuggestBoxWidget(){
initWidget(uiBinder.createAndBindUi(this));
}
公共无效注册事件(){
addKeyUpHandler(新的KeyUpHandler(){
@凌驾
公共无效onKeyUp(KeyUpEvent事件){
if(suggestBox.getText().equalsIgnoreCase(“1”){
suggestionDisplay.hidessuggestions();
}
}
});
}
public void createWidgetAndShow(HasWidgets容器){
suggestBox=新建suggestBox(suggestOracle、textSuggestBox、SuggestDisplay);
容器。清除();
容器。添加(建议框);
registerEvents();
}
public-void-createOracle(){

对于(int i=1;i如果您不使用自己的
SuggestionDisplay
,那么这应该可以正常工作™:


如果您不使用自己的
SuggestionDisplay
,那么这应该可以正常工作™:


您好,非常感谢您花时间制定解决方案。.我尝试复制粘贴您的代码,但发现一些UiBinder错误,如下所示:“缺少模板文件SuggestBoxWidget.ui.xml(预期位于com/ctl/qportal/dbutilweb/client/view)”.我还没有使用UiBinder…我会在有时间的时候尝试实现这一点。现在我会按照@Hilbrand Bouwkamp的建议。即用TextBox替换SuggestBox。(我真的很忙:))您不必使用UiBinder。只需创建一个文本框,并通过将文本框引用到SuggestBox构造函数来动态地将其替换为SuggestBox。然后您就可以使用DefaultSuggestDisplay类来隐藏建议…您好,非常感谢您花时间制定解决方案..我尝试了复制粘贴您的代码,b但我收到一些UiBinder错误,如下所示:“模板文件SuggestBoxWidget.ui.xml丢失(预期位于com/ctl/qportal/dbutilweb/client/view)”。我还没有使用UiBinder…我会在有时间的时候尝试实现它。现在我将采用@Hilbrand Bouwkamp的建议。即用Te替换SuggestBox