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