Javafx 无法使用ControlsFX创建可清除的文本字段

Javafx 无法使用ControlsFX创建可清除的文本字段,javafx,controlsfx,Javafx,Controlsfx,我已经使用场景生成器创建了TextField,但是当我使用KeyEvent尝试时,它不起作用 public class FXMLDocumentController implements Initializable { @FXML private TextField searchPatient; @FXML void keyTyped(KeyEvent event) { this.searchPatient = TextFields

我已经使用
场景生成器创建了
TextField
,但是当我使用
KeyEvent
尝试时,它不起作用

public class FXMLDocumentController implements Initializable {

    @FXML
    private TextField searchPatient;      

    @FXML
    void keyTyped(KeyEvent event) {
        this.searchPatient = TextFields.createClearableTextField();
    }

}
以下是主要课程:

public class MyFX extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);

        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}
以下是FXMLDocument.fxml:

<AnchorPane id="AnchorPane" prefHeight="597.0" prefWidth="726.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.homeo.home.FXMLDocumentController">
   <children>
      <TextField fx:id="searchPatient" layoutX="14.0" layoutY="109.0" onKeyTyped="#keyTyped" prefHeight="26.0" prefWidth="372.0" promptText="Search" />
   </children>
</AnchorPane>

我不想依赖代码来进行设计,这就是为什么我想将
ControlsFX
与IDE生成的代码一起使用

我希望
textfield
必须显示清晰图标,因为我在一个名为
clearableTextFieldf
textfield
中输入了少量文本

但上面的所有代码并不像我预期的那个样工作

它不会创建
ClearableTextField


您正在场景中放置的常规
TextField
KEY\u-TYPED
事件处理程序中创建
TextField
。不过,新创建的
TextField
从未添加到任何场景中

您可以使用
fx:factory
属性来使用
static
方法来创建
TextField
,该
fxmloader
添加到场景中:

。。。
您也可以使用
initialize
方法创建并添加
TextField

public class FXMLDocumentController implements Initializable {

    ...
    @FXML
    private AnchorPane anchorPane;

    @Override
    public void initialize(URL location, Resources resources)
        searchPatient = TextFields.createClearableTextField();
        searchPatient.setLayoutX(14.0);
        searchPatient.setLayoutY(109.0);
        searchPatient.setPrefSize(372.0, 26.0);
        searchPatient.setPromptText("Search");
        anchorPane.getChildren().add(searchPatient);
        ...
    }
}

非常感谢您。我认为使用
FXML
是不可能的。我使用了非常简单的
FXML
。祝你过得愉快。