Как сделать редактируемый список GWT частью выбора? - PullRequest
4 голосов
/ 25 мая 2010

Согласно моему требованию, я написал пользовательскую панель, которая будет отображать три списка, чтобы пользователь мог выбрать дату из этого списка. Эти три списка отвечают за отображение значения месяца, дня и года. Теперь я бы хотел, чтобы мои три списка были доступны для редактирования и выбора. Я имею в виду, что я хотел бы предоставить пользователю настройки, которые дата может быть редактируемой и в то же время выбираемой. Как я могу сделать это в GWT. Здесь я использую GWT2.0. Любой, пожалуйста, дайте идею.

Ответы [ 3 ]

2 голосов
/ 25 мая 2010

Браузер не предоставляет такого контроля. Так же как и 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 голос
/ 26 мая 2010

Вы можете решить это, используя предложитьBox вместо списка. Но пользователю придется начать печатать, чтобы отобразить список.

0 голосов
/ 06 июля 2010

Вы можете использовать абсолютную панель для достижения того же ... Ниже приведен фрагмент кода.

Скрыть поле выбора, используя текстовое поле, отрегулируйте ширину и расположение текстового поля так, чтобы оно охватывало выпадающий список ...

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);      
         }
      });
   }
});
...