5

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

4

3 回答 3

3

不幸的是,JavaFX 中没有验证框架。甚至像 Granite Data Services 这样的框架在使用 JavaFX 进行 bean 验证时也遇到了麻烦:http: //granitedataservices.com/blog/2012/11/29/thoughts-about-javafx-and-bean-validation/ (!Wayback)

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

于 2013-09-16T10:21:50.757 回答
1

您可以验证失去对控件的关注。这是一种非常常见的跨平台方法...

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

JavaFX 8

于 2016-02-19T23:20:16.907 回答
0

As @zenbeni pointed out, there is not automated validation, but you can implement your own using event handlers. How you want to implement it will determine which event handler you choose to implement. They can very wildly in complexity. Here is someone else's attempt to create a fully validate Text Field component: JavaFX 2.2 FXML Validated TextField

You can get away with a simpler implementation, by using the setOnAction Handler described here http://docs.oracle.com/javafx/2/api/javafx/scene/control/TextField.html#setOnAction(javafx.event.EventHandler), but if you're going to be doing this many times, you'll want something more complete like the implementation above.

于 2013-09-17T21:10:44.940 回答