【问题标题】:How can I hide row/column headers in a NatTable?如何在 NatTable 中隐藏行/列标题?
【发布时间】:2016-10-12 17:35:25
【问题描述】:

我希望能够在 NatTable 的右键菜单中添加选项,单击该选项会导致行或列标题被隐藏,但也可以恢复。

【问题讨论】:

    标签: nattable


    【解决方案1】:

    常见的做法是对对应的DataLayer进行操作,修改行高。修改IDataProvider 通常不是一个好习惯,因为IDataProvider 负责提供数据,而不是如何呈现数据。所以下面是一个如何切换列标题层可见性的例子(假设hideHeader是存储当前状态的标志)。

        Button hideButton = new Button(buttonPanel, SWT.PUSH);
        hideButton.setText("Hide/Show");
        hideButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                this.hideHeader = !this.hideHeader;
                if (this.hideHeader) {
                    columnHeaderDataLayer.setDefaultRowHeight(0);
                } else {
                    columnHeaderDataLayer.setDefaultRowHeight(20);
                }
                natTable.refresh(false);
            }
        });
    

    我认识的用户甚至使用这种方法通过将高度缓慢降低到 0 来实现某种过渡。

    如果列标题DataLayer 未知,您也可以使用RowResizeCommand

        Button hideButton = new Button(buttonPanel, SWT.PUSH);
        hideButton.setText("Hide/Show");
        hideButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                this.hideHeader = !this.hideHeader;
                if (this.hideHeader) {
                    natTable.doCommand(new RowResizeCommand(natTable, 0, 0));
                } else {
                    natTable.doCommand(new RowResizeCommand(natTable, 0, 20));
                }
            }
        });
    

    【讨论】:

      【解决方案2】:

      我最终通过更改我的 RowHeaderDataProvider 中的 getColumnCount() 方法中的逻辑来解决这个问题,以便在标记为隐藏时返回 0,或者在标记为不隐​​藏时返回 1。这同样适用于我的 ColumnHeaderDataProvider 中的 getRowCount()。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-17
        • 1970-01-01
        • 2020-06-20
        • 2015-01-22
        • 2019-06-10
        • 2018-01-27
        相关资源
        最近更新 更多