某些列表和表格在失去键盘焦点时会使其选择变灰。
在存在多个列表/表的情况下,这有助于向用户传达哪个选择处于活动状态。
使用NatTable可以轻松实现吗?
到目前为止,我想出的最好的办法是随着焦点的变化在DisplayMode.SELECT
的不同属性之间进行切换-但我不确定在NatTable.configure()
被执行之后是否可以这样做叫。
答案 0 :(得分:1)
是的,可以在调用NatTable#configure()
之后动态更改配置属性。这是动态更改的常用方法。另一种方法是为特殊标签配置选择样式,并仅在表格处于活动状态时才应用该标签。在此示例中可以看到这种方法。
答案 1 :(得分:0)
在@DirkFauth回答之后,我已经开始工作了。这个答案包括一些细节。
使用NatTable.configure()
配置表后,可以不使用NatTable.addConfiguration(IConfiguration)
来修改配置,而可以通过调用IConfiguration.configureRegistry(IConfigRegistry)
来修改。例如:
myConfiguration.configureRegistry( myTable.getConfigRegistry() )
在configureRegistry()的实现中,您可以设置选定单元格和锚定单元格的样式:
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE,
selectedStyle, DisplayMode.SELECT, GridRegion.BODY);
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE,
anchorStyle, DisplayMode.SELECT,
SelectionStyleLabels.SELECTION_ANCHOR_STYLE);
当该表处于非活动状态时,selectedStyle
和anchorStyle
可以被修改为它们通常设置的克隆。例如:
private static Color myInactiveColor = ...;
public static Style makeInactiveBodyCellStyleFrom(@Nonnull Style style) {
Style rv = style.clone();
rv.setAttributeValue( CellStyleAttributes.BACKGROUND_COLOR,
myInactiveColor );
return rv;
}
可以对选定的行标题和列标题的样式进行类似的工作。