我有多個TextFields
,我試圖找到用戶輸入到他們的數字的總和。如何在TextField失去焦點時觸發ChangeListener? JAVAFX
credit1.textProperty().addListener(new creditChangeListener(this.credit1, this.course1, this.grade1));
credit2.textProperty().addListener(new creditChangeListener(this.credit2, this.course2, this.grade2));
credit3.textProperty().addListener(new creditChangeListener(this.credit3, this.course3, this.grade3));
credit4.textProperty().addListener(new creditChangeListener(this.credit4, this.course4, this.grade4));
我有一個內部類實施ChangeListener
來處理用於每個TextField
用戶輸入。
private class creditChangeListener implements ChangeListener<String>{
private final TextField credit;
private final TextField course;
private final TextField grade;
public creditChangeListener(TextField credit, TextField course, TextField grade){
this.credit = credit;
this.course = course;
this.grade = grade;
}
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue){
if(!credit.getText().matches("[0-9]+")) grade.setText("");
if(!course.getText().isEmpty() && !grade.getText().isEmpty()) {
addSum();
}
}
private void addSum(){
sum += Integer.parseInt(credit.getText());
System.out.println("Current sum: " + sum);
}
}
我需要找到進入那些credit TextFields
數字的總和,但是ChangeListener
通過數字增加了數字,而我需要進入的整數。我想在TextFields
失去焦點後觸發ChangeListener
,但我無法找到如何實現這一點,我也不確定這是否是正確的做法。
這可以幫助你:[事件時窗口/階段失去焦點(https://stackoverflow.com/questions/24038988/event-when-window-stage-lost-焦點) –
你想在哪一點執行總和的計算?程序如何知道用戶完成輸入文本的時間? – user1803551