gwt动态添加文本框

时间:2010-11-15 12:42:50

标签: java gwt uibinder

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


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

 }

单击addDynamicTextboxbutton按钮时,将执行此方法并创建新文本框。如何使用另一个按钮,以便在单击时,将获取每个“textbox()”的所有值?还是有必要把名称“新文本框(”名称“)”,以便我可以得到他们所有的价值观?这样做的最佳做法是什么?

2 个答案:

答案 0 :(得分:2)

如果textboxplaceholderComplexPanel的延伸,例如FlowPanel,您可以简单地遍历FlowPanel的孩子:

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

答案 1 :(得分: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中存储的框以获取所有值。