Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javafx 2 与ChangeListener等效的FXML属性?_Javafx 2 - Fatal编程技术网

Javafx 2 与ChangeListener等效的FXML属性?

Javafx 2 与ChangeListener等效的FXML属性?,javafx-2,Javafx 2,我正在将JavaFX应用程序从用Java代码声明/配置其控件转换为将布局拆分为FXML配置。我遇到的问题是,我无法找到代码的ChangeListener的等效属性(?) 在原始Java代码中,我有 class TextFieldChangeListener implements ChangeListener<String> { private boolean isRequiredDataPresent() { return outpu

我正在将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() );
        }
    }  
类TextFieldChangeListener实现ChangeListener{
私有布尔值IsRequestDataPresent(){
返回outputNameTextField.getText().length()>0&&numOfOutputFilesTextField.getText().length()>0;
}
@凌驾

public void changed(observevalue您不能这样做,因为value属性是TextField的一个子部分。因此您必须在代码中编写它。FXML仅用于图形方面。 有关FXML的更多信息:


我想我只是对为什么我可以在FXML中添加onKeyPressed事件而不是onChange事件感到困惑。似乎我应该能够同时做这两件事,或者两者都不做。这只是因为更改侦听器不仅是一个函数,而且是属性上的侦听器。这是Java FX的思维方式。@PhilippeGeek Java FX的问题在于它是di版本。您可以在FXML中使用onAction侦听复选框的更改事件(尽管onAction也是一个属性)。但是,您不能对微调器、文本区域和许多其他对象执行相同的操作。我希望有一个通用的超类型“Field”对于所有携带值的组件,这个超级类型应该有一个setOnValueChange方法和一个value属性.yesp.defect。WPF XAML比FXML更高级
<TextField id="outputNameTextField" onKeyPressed="#textBoxOnChange" promptText="Path of merge file" GridPane.columnIndex="1" GridPane.rowIndex="3" GridPane.columnSpan="2" GridPane.rowSpan="1" />