Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GXT 3 добавление и удаление компонент, как Динамически удалить элемент 
:(
    Опции темы
Atum
Дата 20.12.2013, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 3.10.2008

Репутация: нет
Всего: нет



Всем добрый вечер! 

расскажите как в GXT 3  удалить компонент из VerticalLayoutContainer ? Динамически?

создал SpinnerField - повесил на него событие по которому при увеличении счетчика будет добавляться новый компонент - на форму 
а при уменьшении - удаляться с формы последний ...

но почему то событие не работает ! 

если заменить двумя кнопками - то компоненты чудесно добавляются - но не удаляются ????

(Удаление проходит отлично на примере - кнопки - но)
но мне нужно добавлять и удалять формы с кнопками и полями ! а они не удаляются ? 
кто ответит как это сделать ?

И как заставить  SpinnerField - отрабатывать событие ?
Код

public class MainEntryPoint implements EntryPoint {
    public MainEntryPoint() {
    }

    public void onModuleLoad() {
        Viewport viewPort = new Viewport();        

        FramedPanel form = new FramedPanel();
        form.setHeaderVisible(true);
        form.setWidth(-1);
        
        FieldSet fieldSet = new FieldSet();
        fieldSet.setCollapsible(true);
        form.add(fieldSet);
        
        VerticalLayoutContainer p = new VerticalLayoutContainer();
        fieldSet.add(p);
        OrderedSet orderedSet = new OrderedSet();
        
        
        p.add(orderedSet, new VerticalLayoutData(1, -1));
        
        viewPort.add(form);
        RootLayoutPanel.get().add(viewPort);
        

    }
}



Код

  import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.dom.ScrollSupport;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.form.NumberPropertyEditor;
import com.sencha.gxt.widget.core.client.form.SpinnerField;
import com.sencha.gxt.widget.core.client.info.Info;
import java.util.LinkedList;

public class OrderedSet implements IsWidget{

VerticalLayoutContainer p;
LinkedList<TextButton> list = new LinkedList<TextButton>();// - список динамических полей
    @Override
    public Widget asWidget() {
        if (p == null) {
            p = new VerticalLayoutContainer();
            final VerticalLayoutContainer orderedPanel = new VerticalLayoutContainer();
            orderedPanel.setScrollMode(ScrollSupport.ScrollMode.AUTO);
            
            
          final SpinnerField<Integer> spinner = new SpinnerField<Integer>(new NumberPropertyEditor.IntegerPropertyEditor());
            spinner.setId("spinner");
            spinner.setName("spinner");
            spinner.setMinValue(1);
            spinner.setMaxValue(100);
            spinner.setValue(1, true, true); // таким образом можно установить начальное значение счетчика
            spinner.setOriginalValue(1);
            spinner.setAllowBlank(true);
            spinner.setEditable(false);
            spinner.addValueChangeHandler(new ValueChangeHandler<Integer>() {

                @Override
                public void onValueChange(ValueChangeEvent<Integer> event) {
                    Integer value =  event.getValue();
                    Info.display("ChangeHandler", "new Value: " + value);
                    while(list.size() < value) {
                         int n = list.size() + 1;
                        TextButton form = new TextButton("test"+n);
                        list.add(form );
                        orderedPanel.add(form , new VerticalLayoutData(1, -1, new Margins(5)));
                    } 
                    while(list.size() > value){
                          orderedPanel.remove(list.removeLast());
                    }
                        orderedPanel.onResize();
                  // тут как то нужно обновить orderedBetsPanel  или он должен обновиться сам ???
                }
            });
          
            
             p.add(spinner, new VerticalLayoutData(1, -1,new Margins(5)));
             
             
             TextButton button = new TextButton("test1");
             list.add(button );
             orderedPanel.add(button , new VerticalLayoutData(1, -1 , new Margins(5)));

             p.add(orderedPanel);

        }
        return p;
    }

    
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0373 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.