如何在JavaFX中将三个doubleProperty Red,Green和Blue绑定到'circle.fillProperty()'?
我可以轻松地将圆的radiusProperty绑定到doubleProperty,如下所示:
Circle circle = new Circle();
circle.radiusProperty().bind(boid.getRadiusProperty());
答案 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()));
同样适用于绿色和蓝色。