绑定到形状fillProperty JavaFX

时间:2016-12-06 10:12:25

标签: java javafx data-binding

如何在JavaFX中将三个doubleProperty Red,Green和Blue绑定到'circle.fillProperty()'?

我可以轻松地将圆的radiusProperty绑定到doubleProperty,如下所示:

Circle circle = new Circle();
circle.radiusProperty().bind(boid.getRadiusProperty());

2 个答案:

答案 0 :(得分:0)

您可以使用Bindings.createObjectBinding

Password的{​​{3}}类型为Circle,因此您必须在绑定中创建ObjectProperty<Paint>对象:

Paint

以下是一个完整的示例:

此示例使用private IntegerProperty r = new SimpleIntegerProperty(0); private IntegerProperty g = new SimpleIntegerProperty(0); private IntegerProperty b = new SimpleIntegerProperty(0); circle.fillProperty().bind(Bindings.createObjectBinding(() -> Color.rgb(r.get(), g.get(), b.get()), r, g, b)); s作为输入控件,请注意这些控件的Spinner可以直接用作绑定的依赖项。

valueProperty

注意:public class Main extends Application { private IntegerProperty r = new SimpleIntegerProperty(0); private IntegerProperty g = new SimpleIntegerProperty(0); private IntegerProperty b = new SimpleIntegerProperty(0); @Override public void start(Stage primaryStage) { try { BorderPane root = new BorderPane(); Scene scene = new Scene(root, 400, 400); Group group = new Group(); Circle circle = new Circle(60); circle.setCenterX(70); circle.setCenterY(70); circle.fillProperty() .bind(Bindings.createObjectBinding(() -> Color.rgb(r.get(), g.get(), b.get()), r, g, b)); group.getChildren().add(circle); root.setCenter(group); Spinner<Integer> spinnerR = new Spinner<>(0, 255, 100); Spinner<Integer> spinnerG = new Spinner<>(0, 255, 100); Spinner<Integer> spinnerB = new Spinner<>(0, 255, 100); r.bind(spinnerR.valueProperty()); g.bind(spinnerG.valueProperty()); b.bind(spinnerB.valueProperty()); root.setBottom(new HBox(spinnerR, spinnerG, spinnerB)); primaryStage.setScene(scene); primaryStage.show(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } } 相同。

DoubleProperty

答案 1 :(得分:0)

你可以做到

DoubleProperty red = new SimpleDoubleProperty();
red.bind(Bindings.createDoubleBinding( () ->
    ((Color)circle.getFill()).getRed(),
    circle.fillProperty()));

同样适用于绿色和蓝色。