Java gwt动态添加文本框

Java gwt动态添加文本框,java,gwt,uibinder,Java,Gwt,Uibinder,单击addDynamicTextboxbutton按钮时,将执行此方法并创建新的文本框。如何拥有另一个按钮,以便在单击时从每个“textbox()”中获取所有值?或者,是否有必要输入名称“newtextbox(“name”)”,以便获取它们的所有值?执行此操作的最佳实践方法是什么?您可以使用集合来存储新添加的文本框,以后可以从中获取所有值。大概是这样的: @UiHandler("addDynamicTextboxbutton") void addMoreTextbox(ClickEvent

单击addDynamicTextboxbutton按钮时,将执行此方法并创建新的文本框。如何拥有另一个按钮,以便在单击时从每个“textbox()”中获取所有值?或者,是否有必要输入名称“newtextbox(“name”)”,以便获取它们的所有值?执行此操作的最佳实践方法是什么?

您可以使用集合来存储新添加的
文本框
,以后可以从中获取所有值。大概是这样的:

 @UiHandler("addDynamicTextboxbutton")
  void addMoreTextbox(ClickEvent event) {


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

 }
公共类测试扩展了复合{
私有静态TestUiBinder=GWT.create(TestUiBinder.class);
接口TestUiBinder扩展了UiBinder{}
@尤菲尔德
FlowPanel文本框占位符;
@尤菲尔德
按钮addDynamicTextboxbutton;
私人链接列表框;
公开考试(){
initWidget(uiBinder.createAndBindUi(this));
box=新链接列表();
}
@UiHandler(“addDynamicTextboxbutton”)
void addmore文本框(单击事件){
TextBox=新的TextBox();
textboxplaceholder.add(框);
框。添加(框);
}
}

迭代存储在
框中的框
以获取所有值

如果
textboxplaceholder
ComplexPanel
的扩展名,例如
FlowPanel
,您可以简单地迭代
FlowPanel
的子级:

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);
    }
}
for (Widget w: textboxplaceholder) {
   if (w instanceof TextBox) {
     // do something value: ((TextBox)w).getValue();
   }
}