テキストが変更されたときに、いくつかのTextFieldで検証を実行する必要があります。検証はまったく同じなので、私は1つの手順を使用すると考えました。コントロールにフォーカスがない場合でも検証を実行する必要があるため、onInputMethodTextChangedを使用することはできません。そこで、ChangeListenerをtextPropertyに追加しました。JavaFX変更リスナー内で呼び出し側ノードを決定する
private TextField firstTextField;
private TextField secondTextField;
private TextField thirdTextField;
protected void initialize() {
ChangeListener<String> textListener = new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable,
String oldValue, String newValue) {
// Do validation
}
};
this.firstTextField.textProperty().addListener(textListener);
this.secondTextField.textProperty().addListener(textListener);
this.thirdTextField.textProperty().addListener(textListener);
}
しかし、検証を実行中に、どのTextFieldが変更をトリガしたかを知る方法がありません。どのようにしてこの情報を入手できますか?
'ClassCastException'を避けるには、' TextField'ではなく 'Control'を期待し、' Control'が 'TextField'なのかどうかを確認してください。if(mControl instanceof TextField)(TextField)mControl ).doSomething() ' –