私は複数の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));
私は、各TextField
に対するユーザの入力を処理するためにChangeListener
を実装する内部クラスを持っています。
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);
}
}
は、私は私が全体の番号が入力された必要ながら、しかしChangeListener
は桁ごとを追加し、それらのcredit TextFields
に入力された数字の合計を見つける必要があります。 TextFields
がフォーカスを失った後にChangeListener
をトリガすることを考えましたが、それを達成する方法を見つけることができなかったし、それを行う正しい方法ではないと確信しています。
...それがお役に立てば幸い:[ウィンドウ/ステージが失われたイベントは、フォーカス](https://stackoverflow.com/questions/24038988/event-when-window-stage-lost-フォーカス) –
どの時点で合計の計算を実行しますか?ユーザーがテキストの入力を完了したとき、プログラムはどのように知るべきですか? – user1803551