2016-10-19 57 views
0

我有一个启用了上下文菜单的表,允许用户隐藏/显示列。我想显示一个标签,指出哪些列丢失。我想用StringBinding来完成这个任务。我想知道是否有更简单的方法来侦听将每个列可视属性添加为依赖项的更改?如何收听TableView列JavaFX中的可见属性更改

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); 
+0

注意可以简化结合'回报transactionTableView.getColumns()的结果。流( ).filter(...)。map(...)。collect(Collectors.joining(“,”);'。 –

+0

感谢您的加入提示! –