2015-11-30 52 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”的子类相同。所以目前尚不清楚这会迫使你使用原始类型(你应该永远不要使用它们)。 –