2014-03-18 7 views
0

나는 JTextFieldJTextFields의 합계를 나타내는 것을 허용하는 DocumentListener을 가지고 있습니다. 단 하나의 예외만으로 모든 것을 추가하고 표시합니다. 합계를 구성하는 필드가 채워지고 제거 된 경우 전체 필드는 공백으로 표시 되더라도 여전히 "0.00"을 표시합니다. 내가 너무 아래에 내가 내가 여기 왜를 제외하고 작동하는 코드입니다 서로 다른 조건과 장난 시도하지만, 많은 행운을 가지고 있지 않았다Java에서 DocumentListener가 변경된 후 JTextField를 빈칸으로 가져 오는 방법

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(); 
} 

}

답변

3

는 않을까요이 작품 :

당신의 방법에서
+0

, 감사합니다. 나는이 질문과 같이 점점 더 파싱을 사용함으로써 스스로를 더 어렵게 만들려고 노력했다고 생각한다 : http://stackoverflow.com/questions/14174776/how-to-auto-calculate-input-numeric-values-of -text-field-in-java .. 링크하는 법을 모르겠다. 미안하다. –

0

if (sum > 0.0) { 
    total.setText(String.format("%.2f", sum)); 
else { 
    total.setText(""); 
} 
, 다음 사용하십시오 :

이 작업을 수행
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("");