我希望能够在NatTable的右键菜单中添加选项,单击该选项时会导致行标题或列标题被隐藏,但也可以将其恢复。
答案 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));
}
}
});