在Java中使用DocumentListener进行更改后,如何使JTextField返回空白

时间:2014-03-18 19:57:56

标签: java swing jtextfield documentlistener

我有一个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();
}

}

2 个答案:

答案 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("");