如何在 NatTable 中隐藏 row/column headers?
How can I hide row/column headers in a NatTable?
我希望能够向 NatTable 的右键单击菜单添加选项,单击该菜单将导致行或列 headers 隐藏,但也可以恢复。
我最终通过将我的 RowHeaderDataProvider 中的 getColumnCount() 方法中的逻辑更改为 return 标记为隐藏时为 0 或标记为未隐藏时为 1 来解决此问题。同样适用于我的 ColumnHeaderDataProvider 中的 getRowCount()。
常见的做法是对对应的DataLayer
进行操作,修改行高。修改 IDataProvider
通常不是一个好的做法,因为 IDataProvider
负责提供数据,而不是数据的呈现方式。所以下面是一个如何切换列 header 图层可见性的示例(假设 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 来实现某种过渡。
或者,如果列 header 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));
}
}
});
我希望能够向 NatTable 的右键单击菜单添加选项,单击该菜单将导致行或列 headers 隐藏,但也可以恢复。
我最终通过将我的 RowHeaderDataProvider 中的 getColumnCount() 方法中的逻辑更改为 return 标记为隐藏时为 0 或标记为未隐藏时为 1 来解决此问题。同样适用于我的 ColumnHeaderDataProvider 中的 getRowCount()。
常见的做法是对对应的DataLayer
进行操作,修改行高。修改 IDataProvider
通常不是一个好的做法,因为 IDataProvider
负责提供数据,而不是数据的呈现方式。所以下面是一个如何切换列 header 图层可见性的示例(假设 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 来实现某种过渡。
或者,如果列 header 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));
}
}
});