Gwt ValueChangeHandler和计算动态总值

时间:2014-01-25 05:36:08

标签: gwt gwt2

我有一个全局值和一个Label小部件。

  

int total = 0;   
标签lblTotal =新标签(“”+总计);

我有100个或更多TextBox Widget。

  

Textbox t1 = new TextBox(“0”);   
文本框t2 =新TextBox(“0”);   
文本框t3 =新文本框(“0”);   
..............

每个TextBox上都有 ValueChangeHandler

    t1.addValueChangeHandler(new ValueChangeHandler<String>() {

        public void onValueChange(final ValueChangeEvent<String> event) {
            calculateAndSetTotal(t1);

        }
    });
     ............. 
    // initialize handlers on other textBoxes as t1 TextBox

一种显示总价值的方法。

    private void calculateAndSetTotal(final TextBox txtAmount) {

      // skip validations , assume all will insert integer values
      Integer amount = Integer.parseInt(txtAmount.getText().trim());
      // I have no idea how to calculate total value
      //  total = 
      lblTotal.setText(""+ total);
}

我不想这样做....

total = Integer.parseInt(t1.getText().trim()) +
        Integer.parseInt(t2.getText().trim()) +
        Integer.parseInt(t3.getText().trim()) +
  ........

对我的问题有任何建议吗?

2 个答案:

答案 0 :(得分:1)

首先,您应该将文本框小部件放在List中。 然后遍历列表并进行计算。试试这个:

List<Textbox> textBox_list = new List<Textbox>();

Textbox t1 = new TextBox("0"); 
textBox_list.add(t1);

Textbox t2 = new TextBox("0"); 
textBox_list.add(t2);

Textbox t3 = new TextBox("0"); 
textBox_list.add(t3);

...

for(Iterator<Textbox> i = textBox_list.iterator(); i.hasNext(); ) {

    total = total + Integer.parseInt(i.next().getText().trim());

}


//to get the previous value of the textbox
t1.addFocusHandler(new FocusHandler(){

    @Override
    public void onFocus(FocusEvent event) {

        String text = t1.getText().trim();
        //anything else you want to do

    }

});

答案 1 :(得分:1)

我已经回答了你之前的问题GWT ValueChangeHandler and getting before value

但是要查找一组文本框或任何其他窗口小部件/函数的某些值,如anvlasop所述,您必须维护一个列表或任何其他数据结构并不幸地迭代它。据我所知,除此之外别无他法。