Как заставить JTextField возвращать пустое значение после изменений DocumentListener в Java

У меня есть 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();
}

}


person exit_1    schedule 18.03.2014    source источник


Ответы (2)


Разве это не сработает:

if (sum > 0.0) {
    total.setText(String.format("%.2f", sum));
else {
    total.setText("");
}
person Kavka    schedule 18.03.2014
comment
это работает, спасибо. Думаю, я пытался усложнить себе задачу, используя больше методов получения и анализа, как в этом вопросе: stackoverflow.com/questions/14174776/ .. не знаю, как связать жаль людей - person exit_1; 19.03.2014

В своем методе попробуйте использовать следующее:

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("");
person ltalhouarne    schedule 18.03.2014