代码之家  ›  专栏  ›  技术社区  ›  cometta

gwt动态添加文本框

  •  1
  • cometta  · 技术社区  · 15 年前
     @UiHandler("addDynamicTextboxbutton")
      void addMoreTextbox(ClickEvent event) {
    
    
         textboxplaceholder.add(new TextBox(),"textboxplace");
    
     }
    

    单击addDynamicTextboxbutton按钮时,将执行此方法并创建新的文本框。如何使用另一个按钮,以便在单击时从每个“textbox()”获取所有值?或者有必要把name“new textbox(“name”)”放进去,这样我就能得到它们的所有值吗?最佳实践方法是什么?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Hilbrand Bouwkamp    15 年前

    如果 textboxplaceholder 是和延伸 ComplexPanel ,例如 FlowPanel 您可以简单地遍历 流面板 :

    for (Widget w: textboxplaceholder) {
       if (w instanceof TextBox) {
         // do something value: ((TextBox)w).getValue();
       }
    }
    
        2
  •  1
  •   z00bs    15 年前

    您可以使用集合来存储新添加的 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 得到所有的价值。