Mary
Mary

Reputation: 3

Changing all Shape's colors at once JavaFX

I'm writing a small program in which multiple shapes will be visible in JavaFX. I'm trying to create a button through which it is possible to change all the shape's color to the chosen one by the user.

Right now, I'm only able to do that by changing each shape individually in my lambda expression. It's okay for now since there's only three shapes, but it will be inconvenient further one. Can anyone think of a way to group all the shapes together and access the "setFill" method to change them all at once?

Here's the code:


// Calling Semi-Circle method 
Arc semicircle1  = shapes1.getsemicircle();

// create Colors button and set is as invisible until a shape value is passed by user
Button buttonColors = new Button();
buttonColors.setText("Choose a color for the Shape");
buttonColors.setVisible(true);
buttonColors.setOnAction( e ->
{    
    if (textField1.getText().equalsIgnoreCase("Grey"))
    {
        label1.setText("Grey");
        semicircle1.setFill(Color.GREY);
    }
});

Upvotes: 0

Views: 330

Answers (1)

Alex
Alex

Reputation: 866

You may create some property and bind all shapes to it

final ObjectProperty<Paint> fillProperty = new SimpleObjectProperty(Color.GREY);
...
semicirle1.fillProperty().bind(fillProperty);
pentagon1.fillProperty().bind(fillProperty);
rectangle1.fillProperty().bind(fillProperty);
...
fillProperty.set(Color.RED);

Upvotes: 1

Related Questions