我有一个全局值和一个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()) +
........
对我的问题有任何建议吗?
答案 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所述,您必须维护一个列表或任何其他数据结构并不幸地迭代它。据我所知,除此之外别无他法。