gwt динамическое добавление текстового поля - PullRequest
1 голос
/ 15 ноября 2010
 @UiHandler("addDynamicTextboxbutton")
  void addMoreTextbox(ClickEvent event) {


     textboxplaceholder.add(new TextBox(),"textboxplace");

 }

при нажатии кнопки addDynamicTextboxbutton этот метод выполняется и создается новое текстовое поле. как получить другую кнопку, чтобы при нажатии получить все значения из каждого «текстового поля ()»? или необходимо поставить имя "новое текстовое поле (" имя ")", чтобы я мог получить все их значения? Каков наилучший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2010

Если textboxplaceholder - это расширение ComplexPanel, например FlowPanel, вы можете просто перебрать дочерние элементы FlowPanel:

for (Widget w: textboxplaceholder) {
   if (w instanceof TextBox) {
     // do something value: ((TextBox)w).getValue();
   }
}
1 голос
/ 15 ноября 2010

Вы можете использовать коллекцию для хранения только что добавленного TextBox, из которого впоследствии вы сможете получить все значения. Как то так:

public class Test extends Composite {

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

    interface TestUiBinder extends UiBinder<Widget, Test> {}

    @UiField
    FlowPanel textboxplaceholder;
    @UiField
    Button addDynamicTextboxbutton;
    private LinkedList<TextBox> boxes;

    public Test() {
        initWidget(uiBinder.createAndBindUi(this));
        boxes = new LinkedList<TextBox>();
    }

    @UiHandler("addDynamicTextboxbutton")
    void addMoreTextbox(ClickEvent event) {
        TextBox box = new TextBox();
        textboxplaceholder.add(box);
        boxes.add(box);
    }
}

Перебирайте поля, хранящиеся в boxes, чтобы получить все значения.

...