我正在将JavaFX应用程序转换为在Java代码中声明/配置其控件,以将布局拆分为FXML配置。我遇到的问题是我找不到代码的ChangeListener的等效属性(?)。
在原始Java代码中,我有
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() );
}
}
关于我可以使用FXML最接近的是:
<TextField id="outputNameTextField" onKeyPressed="#textBoxOnChange" promptText="Path of merge file" GridPane.columnIndex="1" GridPane.rowIndex="3" GridPane.columnSpan="2" GridPane.rowSpan="1" />
使用onKeyPressed的问题在于它不会像ChangeListener那样粘贴在值中。如何在FXML中添加更改侦听器?
答案 0 :(得分:5)
您不能这样做,因为value属性是TextField的子部分。所以你必须在你的代码中写它。 FXML仅用于图形方面。 有关FXML的更多信息: