8
私は、JavaFXアプリケーションをJavaコードのコントロールの宣言/設定からレイアウトをFXML設定に分割することに変わっています。私が持っている問題は、コードのChangeListenerに同等の属性(?)を見つけることができないということです。元のJavaコードでChangeListenerに相当するFXML属性?
、私はFXMLを使用して取得することができ、最も近いについて
class TextFieldChangeListener implements ChangeListener<String> {
private boolean isRequiredDataPresent() {
return outputNameTextField.getText().length() > 0 && numOfOutputFilesTextField.getText().length() > 0;
}
@Override
public void changed(ObservableValue<? extends String> observableValue, String s, String s2) {
mergeButton.setDisable(! isRequiredDataPresent());
}
}
を持っている:onKeyPressedを使用しての問題点は、ピックアップに貼り付けられていないということです
<TextField id="outputNameTextField" onKeyPressed="#textBoxOnChange" promptText="Path of merge file" GridPane.columnIndex="1" GridPane.rowIndex="3" GridPane.columnSpan="2" GridPane.rowSpan="1" />
ChangeListenerのような値があります。 FXMLに変更リスナーを追加するにはどうすればいいですか?
私は私がFXMLでonChangeイベントをonKeyPressedイベントを追加することはできませんが、理由としてだけで混乱していると思います。私は両方を行うことができなければならないか、どちらも行うことができないように思われる。 – Todd
これは、変更リスナーが関数ではなく、プロパティのリスナーであるためです。それはJava FXの考え方です。 – PhilippeGeek
@PhilippeGeek JavaFXの問題は、その多様性です。 FXMLのonActionを使用してCheckBoxのイベントを変更することができます(ただし、onActionもプロパティです)。しかし、SpinnersやTextAreasなど、他の多くの人と同じことをすることはできません。私は値を運ぶすべてのコンポーネントのための共通のスーパータイプ "フィールド"が存在することを望みます。このスーパータイプにはsetOnValueChangeメソッドとvalueプロパティが必要です。 –