如何在NatTable中隐藏行/列标题?

时间:2016-10-11 20:12:51

标签: nattable

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

2 个答案:

答案 0 :(得分:0)

我最后通过更改我的RowHeaderDataProvider中的getColumnCount()方法中的逻辑来解决此问题,当标记为隐藏时返回0,或者当标记为未隐藏时返回1。同样适用于我的ColumnHeaderDataProvider中的getRowCount()。

答案 1 :(得分:0)

通常的做法是对相应的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来实现某种转换。

如果列标题RowResizeCommand未知

,您也可以使用DataLayer
    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));
            }
        }
    });