Giorgio
Giorgio

Reputation: 2220

JavaFX: bind disable property of a button to ObservableList size

I have a TableView and I would like to bind the disable property of a Button with the size of the ObservableList model of the table. In particular, I would like to disable the button when the size of the ObservableList is grater than 2.

How can I achieve that?

To disable another button when no row is selected in table I used

editRoadButton.disableProperty().bind(roadsTable.getSelectionModel().selectedItemProperty().isNull());

Is there a similar way?

Upvotes: 14

Views: 18294

Answers (2)

kleopatra
kleopatra

Reputation: 51535

There are factory methods for useful bindings in the Bindings class. In your case f.i.:

button.disableProperty().bind(Bindings.size(items).greaterThan(2));

Upvotes: 22

agonist_
agonist_

Reputation: 5032

You can do something like that

ListProperty<String> list = new SimpleListProperty<>(FXCollections.<String>emptyObservableList());
Button foo = new Button();

foo.disableProperty().bind(new BooleanBinding() {
    {
        bind(list);
    }

    @Override
    protected boolean computeValue() {
        return list.size() > 2;
    }
});

Upvotes: 2

Related Questions