当前位置: 首页 > 知识库问答 >
问题:

动态更改NatTable中特定单元格的行前景色

柏高洁
2023-03-14

你有没有动态改变单元格颜色的建议,我在下面尝试过,但当表没有那些标签(“失败”)时,即使在行之后也会保持彩色。当表中不存在故障标签时,我想恢复有色单元格的颜色。

private static final String FAILURE = "FAILURE";
void example(){
final DefaultBodyLayerStack bodyLayer = underlyingLayer.getBodyLayer();



        // Custom label "FAILURE" for cell
        IConfigLabelAccumulator cellLabelAccumulator = new IConfigLabelAccumulator() {
            Integer rowCount = null;

            @Override
            public void accumulateConfigLabels(LabelStack configLabels,
                    int columnPosition, int rowPosition) {
                int rowIndex = bodyLayer.getRowIndexByPosition(rowPosition);

                for (GridConsoleRow gridConsoleRow : underlyingLayer.getBodyDataProvider().getList()) {
                    if (StringUtils.equals(gridConsoleRow.getLogLevel().trim(), FAILURE)) {
                            rowCount = bodyLayer.getPreferredRowCount()-1;
                            break;
                        }
                    }

                    if (rowCount != null && rowIndex == rowCount.intValue()) {
                    configLabels.addLabel(FAILURE);
                    }
                }
            };
        bodyLayer.setConfigLabelAccumulator(cellLabelAccumulator);

        // Custom style for label "FAILURE"
        natTable.addConfiguration(new AbstractRegistryConfiguration() {
            @Override
            public void configureRegistry(IConfigRegistry configRegistry) {
                Style cellStyle = new Style();
                cellStyle.setAttributeValue(
                        CellStyleAttributes.FOREGROUND_COLOR,
                        GUIHelper.COLOR_RED);
                configRegistry.registerConfigAttribute(
                        CellConfigAttributes.CELL_STYLE, cellStyle,
                        DisplayMode.NORMAL, FAILURE);

            }
        });
    }

共有1个答案

越学义
2023-03-14

您是否调试过故障标签真的不存在?NatTable只显示它应该显示的内容,所以如果您只为失败标签注册了红色背景的样式,它将只呈现具有该标签的红色行。老实说,我不明白您的iconfiglabelaccumulator的逻辑。可能是rowcount成员造成的,因为如果没有失败,就不会再将其设置为null。不确定为什么要将这些信息存储在成员变量中。

 类似资料:
  • 我正在尝试根据行标准更改背景行颜色。我离得很近,但有些事情我不能完全理解。(我相信这是因为我从底层列表中提取对象,而不是动态地获取数据。我标记了下面代码的这一部分) 在下面的示例中,每一行颜色都基于一个具有成功或失败值的对象(MyObj)。如果myObj有一个成功值,行应该是绿色的。如果myObj有一个失败值,那么行应该是红色的。如果myObj没有值,则应使用默认行颜色。

  • 问题内容: 我现在用于制作树表结构,我想动态更改特定单元格的颜色。如何更改电池的颜色? 我发现此代码可以更改颜色,但是无法正常工作。 这是代码: 问题答案: 使用荧光笔。

  • 我想改变JTable的单元格背景颜色,想从MySQL数据库中获取数据。 我在MySQL中使用一个数据表,它有一个状态字段。如果状态为1,则单元格背景颜色应为红色;如果状态为0,则应更改为红色。

  • 问题内容: 我想更改tkinter.treeview中选定单元格的前景色或背景色。我怎样才能做到这一点? 此链接显示了更改树视图中所有单元格颜色的命令,但我无法在单个单元格中使用它。 我以前写过一个测试代码。请使用此代码得出您的解决方案/建议。谢谢。 该链接显示了如何使用标记来更改数据行(即所选项目)而不是单元格的颜色。 问题答案: @BryanOkley分享到,不能更改ttk.Treeview中

  • 在开始之前,我查看了一些解决方案和文档。我似乎不明白为什么我的代码没有按我认为应该的方式工作。我已经扩展了DefaultTableCellRenderer,但我不相信它正在被应用——否则我就把事情搞砸了。 以下是我在发布此问题之前查看过的帖子/网站: Swing-是否可以在JTable单元格中设置特定文本的字体颜色? JTable细胞渲染器 http://docs.oracle.com/javas

  • 问题内容: 我的站点读取一个XML文件,该文件包含数据表的信息(值)。我使用CSS设置表格样式,并且一切正常。 为了获得更好的用户体验,我想知道是否有可能根据其值动态更改每个单元格的背景颜色? 例如: 每个包含小于5的数字的单元格都有红色背景色; 每个大于等于“ 5”的单元格具有绿色背景色。 我对此的第一个解决方案是使用Javascript-但我想知道是否有办法仅使用CSS样式来解决此问题? 问题