2015-11-30 54 views
1

通過簡單的行之有效的前景:在JavaFX綁定顏色拾取到標籤背景屬性

ObjectProperty op = label.textFillProperty(); 
    ColorPicker cp = new ColorPicker(Color.GRAY); 
    ...    
    op.bind(cp.valueProperty()); 

我如何做它的背景 - 甚至不知道這是可能的,由於背景屬性的複雜性

回答

3

首先,不要使用原始類型。您發佈的代碼應該是

ObjectProperty<Paint> op = label.textFillProperty(); 
ColorPicker cp = new ColorPicker(Color.GRAY); 
...    
op.bind(cp.valueProperty()); 

爲背景,您可以使用Bindings.createObjectBinding()

ObjectProperty<Background> background = label.backgroundProperty(); 
background.bind(Bindings.createObjectBinding(() -> { 
    BackgroundFill fill = new BackgroundFill(cp.getValue(), CornerRadii.EMPTY, Insets.EMPTY); 
    return new Background(fill); 
}, cp.valueProperty()); 
+0

感謝詹姆斯。我通常不使用原始類型,但在這裏我有所有控件和選定屬性集的通用屬性編輯器(標籤示例): ObservableMap props = getProperties(); props.put(「Text」,textProperty())... ...在通用編輯器中我在此列表中有一個彈出窗口。這是正確的方法(學習移植舊代碼的現代Java) –

+0

沒有上下文,我不太確定,我猜這是針對你的問題(這是我的錯,儘管...),但是ObjectProperty 是「Object」的子類與「ObjectProperty」的子類相同。所以目前尚不清楚這會迫使你使用原始類型(你應該永遠不要使用它們)。 –