1

LabeltextProperty のバインドに問題があります。ダブル変数を使用してテキストをフォーマットしたいと考えています。
次のようにすると機能します (ラベル テキスト プロパティが更新されます) が、そのようにすると、希望どおりにテキストを書式設定できません。

label.textProperty().bind(model.doubleProperty().asString());


そのようには機能しません(ラベルテキストプロパティは更新されません):

StringBinding labelBinding = new StringBinding() {

        {
            bind(model.doubleProperty().asString());
        }

        @Override
        protected String computeValue() {
            if(model.getDouble() <= 0) {
                return "---";
            } else {
                return df1.format(model.getDouble());
            }
        }
    };
    label.textProperty().bind(labelBinding);


助けてくれてありがとう。

4

2 に答える 2

3

私はそれを機能させる方法を見つけましたが、それがどのように機能するかはよくわかりません。

StringBinding labelBinding = new StringBinding() { 

    { 
        bind(model.doubleProperty()); // don't call asString() here
    } 

    @Override 
    protected String computeValue() { 
        if(model.getDouble() <= 0) { 
            return "---"; 
        } else { 
            return df1.format(model.getDouble()); 
        } 
    } 
}; 
label.textProperty().bind(labelBinding); 


しかし、これはコンパイルエラーになります

label.textProperty().bind(model.doubleProperty());      
于 2012-09-07T07:53:12.333 に答える