使用Griffon和JavaFX将文本字段绑定到数字

时间:2013-02-24 01:33:17

标签: validation javafx griffon

我正在使用Griffon 1.2.0和JavaFX,我想将文本字段绑定到一个数字。我以为我能够通过将模型属性定义为Float来实现它,但即使我定义了转换器,它也似乎不喜欢这样。我查看了Validator插件,但这似乎只适用于Swing(而非JavaFX) - 这是一种耻辱,因为这个演示文稿使它看起来非常好:http://www.slideshare.net/ecspike/introduction-to-griffon(第67页显示了我想要的功能类型) )。

与此同时,我刚刚在我的视图的noparent块中添加了一个属性更改侦听器,如What is the recommended way to make a numeric TextField in JavaFX?所示:

amount2.textProperty().addListener({ ObservableValue<? extends String> observable, String oldValue, String newValue ->
    try {
        Integer.parseInt(newValue);
    } catch (Exception e) {
        observable.setValue(oldValue);
    }
} as ChangeListener<String>)

这可确保用户只能输入数字,但有更好的选择吗?我在JavaFX空间中找不到任何可以与Validation插件功能相媲美的东西 - 我应该放弃JavaFX并回到Swing吗?

1 个答案:

答案 0 :(得分:0)

我认为这个功能已经由GroovyFX的@FXBindable和bind()节点提供,即

 class SampleModel {
     @FxBindable float number
 }

 // View
 textField(text:bind(target: model, 'number', converter: { v -> /* insert converter code here */))

考虑到GroovyFX的bind()是SwingBuilder的bind()的副本。