#javafx #binding #javafx-8
#javafx #привязка #javafx-8
Вопрос:
У меня есть таблица с включенным контекстным меню, позволяющим пользователям скрывать / показывать столбцы. Я хотел бы показать метку, которая указывает, какие столбцы отсутствуют. Я хотел бы выполнить это с помощью StringBinding. Мне интересно, есть ли более простой способ прослушивания изменений, добавляющих видимое свойство каждого столбца в качестве зависимости?
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);
Спасибо
Ответ №1:
Я нашел, что я могу использовать -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);
Комментарии:
1. Обратите внимание, что вы можете упростить результат привязки к
return transactionTableView.getColumns().stream().filter(...).map(...).collect(Collectors.joining(", ");
.