如何使GWT列表框可以从选择中编辑

时间:2010-05-25 06:49:18

标签: gwt listbox gwt2

根据我的要求,我编写了一个自定义面板,它将显示三个ListBox,使用户可以从这个自定义列表框中选择日期。这三个列表框负责显示月,日,年值。现在我想让我的三个列表框是可编辑的,同时可以选择。我的意思是我想提供一个用户首选项,日期可以编辑,同时可以选择。我怎么能在GWT中做到这一点。我在这里使用GWT2.0。请任何人提出想法。

3 个答案:

答案 0 :(得分:2)

浏览器不提供此类控件。 GWT也没有。您需要自己编码。 EXT-GWT(非免费)ComboBox具有此功能。 http://www.extjs.com/examples/ Smart GWT(也非免费)http://www.smartclient.com/smartgwt/showcase/#styled_combobox_category

也是如此

如果你要自己滚动,你可以从一个Composite开始,它有一个TextBox和一个VerticalPanel,它在单击TextBox(或它的一部分)时显示。您的面板将包含可点击的项目。

答案 1 :(得分:1)

您可以使用suggestBox而不是列表框来解决这个问题。但是用户必须开始输入才能显示列表。

答案 2 :(得分:0)

您可以使用绝对面板来实现相同的... 以下是代码段。

使用文本框隐藏选择框调整文本框的宽度和位置,以便它应覆盖下拉列表......

final AbsolutePanel absolute_panel_edit_list = new AbsolutePanel();
final TextBox onhold_textbox = new TextBox();
final ListBox onhold = new ListBox();

for (int onholdcount = 0; onholdcount < onHoldTypes.length; onholdcount++)
{
   onhold.addItem(onHoldTypes[onholdcount]);
}

onhold.addKeyPressHandler(new KeyPressHandler()
{       
   @Override
   public void onKeyPress(KeyPressEvent event) 
   {
      onhold_textbox.setStyleName("onhold_textbox");
      absolute_panel_edit_list.add(onhold,0,8);
      absolute_panel_edit_list.add(onhold_textbox,1,10);
      absolute_panel_edit_list.setSize("142px", "35px");

      flex_row4.removeCell(4, 9);
      flex_row4.setWidget(4, 9, absolute_panel_edit_list);
      onhold_textbox.addMouseOutHandler(new MouseOutHandler() 
      {        
         @Override
         public void onMouseOut(MouseOutEvent event) 
         {
            String customized_time = onhold_textbox.getText();
            int no_of_elements = onhold.getItemCount();
            onhold.addItem(customized_time);
            onhold.setSelectedIndex(no_of_elements);
            flex_row4.removeCell(4, 9);
            flex_row4.setWidget(4, 9, onhold);
            flex_row4.setWidget(4, 11, completed_togglebutton);
            flex_row4.setWidget(4, 13, completed_label);      
         }
      });
   }
});