purring pigeon
purring pigeon

Reputation: 4209

How to listen to TableView Column Visible Property Changes in JavaFX

I have a table with the context menu enabled allowing users to hide/show columns. I would like to show a label which indicates which columns are missing. I would like to accomplish this with a StringBinding. I am wondering if there is an easier way to listen for changes that adding each columns visible property as a dependency?

    StringBinding hiddenColumnBinding = Bindings.createStringBinding(() -> {
        String text = "";
        Optional<String> columns = transactionTableView.getColumns()
                                        .stream()
                                       .filter(column -> !column.isVisible())
                                       .map(column -> column.getText())
                                       .reduce((first, second) -> first + ", " + second);
        if(columns.isPresent()){
            text = "Hidden Columns: " + columns.get();
        }
        return text;
    }, WHAT GOES HERE?);
    hiddenColumns.textProperty().bind(hiddenColumnBinding);

Thanks

Upvotes: 0

Views: 714

Answers (1)

purring pigeon
purring pigeon

Reputation: 4209

I found what I can use -transactionTableView.getVisibleLeafColumns()

StringBinding hiddenColumnBinding = Bindings.createStringBinding(() -> {
    String text = "";
    Optional<String> columns = transactionTableView.getColumns()
                                    .stream()
                                   .filter(column -> !column.isVisible())
                                   .map(column -> column.getText())
                                   .reduce((first, second) -> first + ", " + second);
    if(columns.isPresent()){
        text = "Hidden Columns: " + columns.get();
    }
    return text;
}, transactionTableView.getVisibleLeafColumns());
    hiddenColumns.textProperty().bind(hiddenColumnBinding);

Upvotes: 1

Related Questions