6

次のコードを試していますが、コンパイルされません。

SimpleIntegerProperty startPageProperty = new SimpleIntegerProperty();

TextField startPageField = new TextField();

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

最後の静的メソッド呼び出しは、これらのパラメーターを受け入れません。

4

2 に答える 2

13

Bindings#bindBidirectionalを期待しStringConverter[Number]ます、あなたはを提供していStringConverter[Integer]ます。直感的ではないかもしれませんが、NumberStringConverter代わりに使用する必要があります。

Bindings.bindBidirectional(startPageField.textProperty(), 
                           startPageProperty, 
                           new NumberStringConverter());
于 2013-03-23T17:00:26.433 に答える
1

前の答えは正しいですが、これを解決する別の方法があります。これは、特定の方法(たとえば、数千の区切り記号を使用)で数値をフォーマットする場合に適しています。

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

aを使用する利点はTextFormatter、テキストフィールドがフォーカスを失ったときに、ユーザーが入力した任意の数値を再フォーマットすることです。

于 2020-05-28T10:00:24.220 に答える