2016-10-19 82 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

感謝您的加入提示! –