10

我正在将 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 中添加更改侦听器?

4

1 回答 1

5

您不能这样做,因为 value 属性是 TextField 的子部分。所以你必须把它写在你的代码中。FXML 仅用于图形方面。有关 FXML 的更多信息:

于 2013-06-28T23:08:39.487 回答