JavaFX中的字段验证

JavaFX中的字段验证,javafx,fxml,Javafx,Fxml,我使用fxml创建了一个注册表。现在我想实现字段验证功能。我正在尝试为TextField实现验证,但仍然没有得到它。不幸的是,JavaFX中没有验证框架。甚至像Granite Data Services这样的框架在JavaFX:(!Wayback)的bean验证方面也有问题 如果您对使用JavaFX进行bean验证感兴趣,可以使用启用bean验证的JavaFX属性字段生成javabean(您验证绑定到JavaFX组件的javabean)。它可以是一个很好的解决方案,也可以是解决问题的一个很好的灵

我使用fxml创建了一个注册表。现在我想实现字段验证功能。我正在尝试为TextField实现验证,但仍然没有得到它。

不幸的是,JavaFX中没有验证框架。甚至像Granite Data Services这样的框架在JavaFX:(!Wayback)的bean验证方面也有问题


如果您对使用JavaFX进行bean验证感兴趣,可以使用启用bean验证的JavaFX属性字段生成javabean(您验证绑定到JavaFX组件的javabean)。它可以是一个很好的解决方案,也可以是解决问题的一个很好的灵感。

正如@zenbeni所指出的,没有自动验证,但您可以使用事件处理程序实现自己的验证。如何实现它将决定您选择实现哪个事件处理程序。它们在复杂性方面可能非常复杂。以下是其他人试图创建完全验证文本字段组件的尝试:


通过使用这里描述的setOnAction处理程序,您可以获得一个更简单的实现,但是如果您要多次这样做,您将需要像上面的实现那样更完整的实现

您可以在控件失去焦点时进行验证。这是一种非常常见的跨平台方法

textField.focusedProperty().addListener((observable, oldValue, newValue) ->
{
   if(textField.isFocused() == false)
   {
      LOGGER.debug("Validate on lost focus here...");
   }
});
JavaFX8

请参阅的。