【发布时间】:2018-01-08 05:21:20
【问题描述】:
我有多个TextFields,我正在尝试查找用户输入的数字的总和。
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,但我不知道如何实现,也不确定这是正确的做法。
【问题讨论】:
-
这可能对你有帮助:Event when window/stage lost focus
-
您要在什么时候执行总和的计算?程序如何知道用户何时完成输入?