2010-11-15 3 views
1
@UiHandler("addDynamicTextboxbutton") 
    void addMoreTextbox(ClickEvent event) { 


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

} 

при нажатии кнопки AddDynamicTextboxbutton этот метод выполняется и создается новое текстовое поле. как сделать еще одну кнопку, чтобы при щелчке получились все значения из каждого из «textbox()»? или нужно поместить имя «новое текстовое поле (« имя »), чтобы я мог получить все их значения? Каков наилучший способ сделать это?gwt dynamic add textbox

ответ

2

Если textboxplaceholder является и продлить из ComplexPanel, например FlowPanel можно просто перебрать детей в FlowPanel:

for (Widget w: textboxplaceholder) { 
    if (w instanceof TextBox) { 
    // do something value: ((TextBox)w).getValue(); 
    } 
} 
1

Вы можете использовать коллекцию для хранения недавно добавленного 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, чтобы получить все значения.