我有一个DocumentListener
,允许JTextField
代表另外7个JTextFields
的总数。只需一个例外,它就可以添加并显示一切正常;如果组成总数的字段已填充然后被删除,则当我希望它只是空白时,总字段仍显示“0.00”。我试着玩不同的条件,但没有太多的运气,所以下面是我知道的代码,除了我为什么在这里:
public class OvertimeSumListener implements DocumentListener {
private JTextField[] timeFields;
private JTextField total;
public OvertimeSumListener(JTextField[] timeFields, JTextField total) {
this.timeFields = timeFields;
this.total = total;
}
public void calculateTotal() {
double sum = 0;
for (JTextField timeField : timeFields) {
String text = timeField.getText();
try {
sum += Double.parseDouble(text);
} catch (NumberFormatException e) {
// not a number - ignore
}
}
total.setText(String.format("%.2f", sum));
}
public void insertUpdate(DocumentEvent e) {
calculateTotal();
}
public void removeUpdate(DocumentEvent e) {
calculateTotal();
}
public void changedUpdate(DocumentEvent e) {
calculateTotal();
}
}
答案 0 :(得分:3)
不会这样做:
if (sum > 0.0) {
total.setText(String.format("%.2f", sum));
else {
total.setText("");
}
答案 1 :(得分:0)
在您的方法中,请尝试使用以下内容:
for (JTextField timeField : timeFields) {
String text = timeField.getText();
try {
sum += Double.parseDouble(text);
} catch (NumberFormatException e) {
// not a number - ignore
}
}
if(sum>0.0) total.setText(String.format("%.2f", sum));
else total.setText("");