【发布时间】:2011-07-23 23:34:33
【问题描述】:
我的JFrame 对象上有两个JFormattedTextField 对象。我想要这些JFormattedTextField 对象的值的基本数学(加法)。我希望它在焦点丢失第一个或第二个文本字段时发生。但是当“focusLost()”时,事件没有得到最后一个值,它得到了前一个值。
例如; tf1 最初为 0,tf2 最初为 0。我将2写入tf1,当focusLost()时,结果(tf1+tf2)仍然为0。当我更改其中任何一个时,结果变为2(之前的值)
如何获取 focusLost 上的最后一个值?
这是我的代码:
JFormattedTextField tf1,tf2;
NumberFormat format=NumberFormat.getNumberInstance();
tf1=new JFormattedTextField(format);
tf1.addFocusListener(this);
tf2=new JFormattedTextField(format);
tf2.addFocusListener(this);
和focusLost():
public void focusLost(FocusEvent e) {
if(tf1.getValue() == null) tf1.setValue(0);
if(tf2.getValue() == null) tf2.setValue(0);
//because if I dont set, it throws nullPointerException for tf.getValue()
BigDecimal no1 = new BigDecimal(tf1.getValue().toString());
BigDecimal no2 = new BigDecimal(tf2.getValue().toString());
System.out.println("total: " + (no1.add(no2)));
}
【问题讨论】:
标签: java swing jframe jformattedtextfield