【问题标题】:JavaFX 2.2: how to bind String to Integer?JavaFX 2.2:如何将字符串绑定到整数?
【发布时间】:2013-03-13 00:34:42
【问题描述】:

我正在尝试以下代码,但无法编译:

SimpleIntegerProperty startPageProperty = new SimpleIntegerProperty();

TextField startPageField = new TextField();

Bindings.bindBidirectional(
    startPageField.textProperty(), startPageProperty, new IntegerStringConverter()
);

最后的静态方法调用不接受这些参数。

【问题讨论】:

  • 能否提供编译错误?

标签: java javafx binding javafx-2


【解决方案1】:

Bindings#bindBidirectional 需要 StringConverter[Number],您提供的是 StringConverter[Integer]。虽然它可能不直观,但您必须改用 NumberStringConverter

Bindings.bindBidirectional(startPageField.textProperty(), 
                           startPageProperty, 
                           new NumberStringConverter());

【讨论】:

    【解决方案2】:

    虽然前面的答案是正确的,但还有另一种方法可以解决这个问题,如果您想以特定方式(例如使用千位分隔符)格式化数字,这种方法会更好:

    var formatter = new TextFormatter<>(new NumberStringConverter("#,###"));
    formatter.valueProperty().bindBidirectional(startPageProperty);
    startPageField.setTextFormatter(formatter);
    

    使用TextFormatter 的优势在于,当文本字段失去焦点时,它将重新格式化用户输入的任何数字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多