我有一个具有自定义标题菜单配置的NatTable(table
),设置如下:
table.addConfiguration(new CustomHeaderMenuConfiguration(table, columnHeaderLayer));
配置类以如下方式构建菜单:
@Override
protected PopupMenuBuilder createColumnHeaderMenu(NatTable natTable) {
return super.createColumnHeaderMenu(natTable).withHideColumnMenuItem("Hide column(s)")
.withColumnRenameDialog("Change annotation name").withVisibleState(
PopupMenuBuilder.COLUMN_RENAME_MENU_ITEM_ID, new ValidRenamableHeaderState());
}
可见状态会按预期触发。在配置中,我还配置了该层以将命令注册到特定的列标题层:
@Override
public void configureLayer(ILayer layer) {
layer.registerCommandHandler(
new DisplayColumnRenameDialogCommandHandler(this.columnHeaderLayer));
}
现在从通过DisplayColumnRenameDialogCommandHandler
的API进行爬网,我希望在某个时候,新值将通过列标题层到达列标题数据提供者。
列标题层本身是在编辑器类中这样设置的:
final IDataProvider columnHeaderDataProvider = new ColumnHeaderDataProvider(bodyDataProvider);
final ColumnHeaderLayer columnHeaderLayer =
new ColumnHeaderLayer(new DefaultColumnHeaderDataLayer(columnHeaderDataProvider),
compositeFreezeLayer, selectionLayer);
[ColumnHeaderDataProvider
实现IDataProvider
,getDataValue(int, int)
正常工作。
我遇到的问题是,尽管列标题上的label发生了变化,但从未调用过[[ColumnHeaderDataProvider.setData(int, int, newValue)
,因此从未更新过模型数据。]我想念什么?
我有一个带有自定义标题菜单配置的NatTable(表),设置如下:table.addConfiguration(new CustomHeaderMenuConfiguration(table,columnHeaderLayer));配置类...
ColumnHeaderLayer
并不绑定到实际的列标题数据,而是绑定到助手类提供的内部Map。 (可能)是因为在通常的使用情况下,列并不与主体数据提供程序(如我的情况)相关,而是与一堆字符串相关。ColumnHeaderLayer
内跟踪列标题的重命名。