ControlsFX SpreadsheetView:如何隐藏列?

时间:2017-02-01 07:44:22

标签: java user-interface javafx spreadsheet controlsfx

请问如何隐藏/显示ControlsFX的SpreadsheetView中的特定列。我不想完全从Grid(GridBase)中删除它。例如。如果我隐藏它,我可以再次显示它而不重新填充值。

类似的东西:

initial:
+----+----+----+
| A  | B  | C  |
+----+----+----+
| 1  | 2  | 3  |
+----+----+----+


hide column 'B':
+----+----+
| A  | C  |
+----+----+
| 1  | 3  |
+----+----+


show column 'B': 
+----+----+----+
| A  | B  | C  |
+----+----+----+
| 1  | 2  | 3  |
+----+----+----+

2 个答案:

答案 0 :(得分:1)

当我在ControlsFX google群组中回复您时,此功能现在无法在ControlsFX 8.40.12中实现。

但是,我在SpreadsheetView中进行了大量改进,包括隐藏行/列。能够对电子表格进行排序。能够添加一些过滤器等。

这些功能等待合并到ControlsFX中,如果您想尝试可以分叉我的存储库:https://bitbucket.org/controlsfx/controlsfx/pull-requests/627/new-features-for-the-spreadsheetview/diff#comment-None

答案 1 :(得分:0)

我查看了SpreadsheetColumn规范,它没有hide或visible方法。您可以使用技巧更改SpreadsheetColumn宽度大小。我已尝试过以下方法,我认为它正在发挥作用。你能尝试下面的方法吗?示例代码部分:

        // This sample column:
        SpreadsheetColumn column = spreadsheetView.getColumns().get(1);
        double oriWidth = column.getWidth();
        columnHide = false;

        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {

                if(!columnHide){
                    column.setMaxWidth(0);
                    column.setMinWidth(0);
                    columnHide = true;
                }else{
                    column.setMinWidth(oriWidth);
                    columnHide = false;
                }

            }
        });