JTable 将单元格颜色设置为特定值

2023-11-21

我正在尝试编写一种方法,对于给定的参数(值、颜色),在值等于 cellValue 的单元格的背景上设置颜色。

我的方法实际上所做的是,它在整行的单元格背景上设置颜色,当我选择表格上的行时,我希望方法每次仅在特定列(其中 cellValue 等于值)设置颜色我调用该方法。

    void setCellBackgroundColor(boolean cellValue, final Color color) {
        List<List<Object>> data = tView.getTTableModel().getData();

        for (int row = 0; row < data.size(); row++) {
            for (int col = 0; col < data.get(row).size(); col++) {
                TableCellRenderer renderer = tView.table.getCellRenderer(row, Col);
                Component component = tView.table.prepareRenderer(renderer, row, col);
                boolean bValue = 
                    TDataTypeRenderer.parseIntoRealValue(
                        data.get(row).get(col)
                    )
                );
                if (bValue == cellValue) {
                    component.setBackground(color);
                }
    }

当我选择表格上的行时,我希望方法仅在特定列设置颜色

尝试覆盖prepareRenderer()@mKorbel 建议的方法。

示例代码:

Object[] columnNames = { "A", "B", "C", "D" };
Object[][] data = { 
        { "abc", new Double(850.503), 53, true },
        { "lmn", new Double(36.23254), 6, false }, 
        { "pqr", new Double(8.3), 7, false },
        { "xyz", new Double(246.0943), 23, true } };

JTable table = new JTable(data, columnNames) {
    @Override
    public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
        Component comp = super.prepareRenderer(renderer, row, col);
        Object value = getModel().getValueAt(row, col);
        if (getSelectedRow() == row) {
            if (value.equals(false)) {
                comp.setBackground(Color.red);
            } else if (value.equals(true)) {
                comp.setBackground(Color.green);
            } else {
                comp.setBackground(Color.white);
            }
        } else {
            comp.setBackground(Color.white);
        }
        return comp;
    }
};

当选择第一行时:

enter image description here

当选择第二行时。

enter image description here

阅读更多...


EDIT

根据你最后的评论

是否可以在不单击(选择)表格上的行的情况下更改颜色?

是的,只需删除所选行的选中即可。

    Object value = getModel().getValueAt(row, col);
    if (value.equals(false)) {
        comp.setBackground(Color.red);
    } else if (value.equals(true)) {
        comp.setBackground(Color.green);
    } else {
       comp.setBackground(Color.white);
    }

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JTable 将单元格颜色设置为特定值 的相关文章

随机推荐

  • 为什么 MQTT 无法与 NodeJS 连接?

    我在尝试连接时遇到一个奇怪的问题MQTT服务器与NODEJS 如果我连接到MQTT服务器和我没有连接它只是挂起 如果我使用命令行执行此操作 我会看到数据 因此网络 服务器等都很好 如果我使用错误的端口 那么命令行会给我一条有效的拒绝消息 但
  • 为什么 django-lint 告诉我 `auto_now_add` 已被弃用?

    各位 Djangonauts 朋友们大家好 我检查了我的项目Django lint 它产生 W 211 16 MyModel timestamp Uses superceded auto now or auto now add The 提交
  • 使用 Oracle PL/SQL Developer 生成测试数据

    我想测试一些模式和索引 并且想知道 PL SQL Developer 中是否有可以生成测试数据的功能 这样我就不必创建序列和循环来在表中插入数据 循环和 PL SQL 并不总是必要的 这个技巧可能会有所帮助 insert into emp
  • Discord window.localStorage 未定义。如何访问 Discord 页面上的 localStorage?

    当我跑步时window localStorage on https stackoverflow com它返回localStorage但是当我在 Discord 页面上使用相同的命令时它会返回undefined每次 Discord 是否正在采
  • Phonegap Cordova - 全屏后底部黑色状态栏

    从我记事起我就一直遇到这个问题 我认为这可能只是来自我的手机或仿真 但在发布我的应用程序后 我仍然在屏幕底部看到这个黑色矩形 它看起来像状态栏 在我的 config xml 中有此内容后会发生这种情况
  • 有没有更简单快速的方法来检测(Windows Phone 7)设备是否有互联网连接

    是否有更简单快速的方法来检测 Windows Phone 7 设备是否有互联网连接 我当前正在发送网络请求 等待超时时间并处理异常 希望有一种快速简单的方法来查询设备 在发送任何请求之前查看它是否有连接 提前致谢 如果没有连接 此方法将返回
  • PHP 获取图像高度和宽度

    您好 我需要动态获取上传图像的高度和宽度 这是我正在使用的 PHP 函数 但它不会返回任何宽度和高度 请你帮助我好吗 list width height type attr getimagesize FILES Artwork min wi
  • 实体框架+存储库+单元或工作问题

    我正在考虑使用 EF 4 启动一个新项目并浏览一些文章 我发现了一篇关于 EF 以及存储库模式和工作单元的文章 http blogs msdn com b adonet archive 2009 06 16 using repository
  • 为什么“uniq”将相同的单词视为不同的单词?

    我想计算文件中单词的频率 其中单词是一行一行的 该文件非常大 因此这可能是问题所在 在本例中共有 300k 行 我执行这个命令 cat temp occ uniq c sort k1 1nr k2 gt distribution txt 问
  • Symfony 2:控制器的依赖注入(DI)

    是否有机会使控制器依赖于其服务 而不是通过使用其中的服务容器 而是通过纯粹的构造函数依赖注入 我想用这种方式编写控制器
  • Python lambda函数计算数字的阶乘

    我刚刚开始学习Python 我遇到了 lambda 函数 在其中一个问题上 作者要求编写一个用于数字阶乘的单线性 lambda 函数 这是给出的解决方案 num 5 print lambda b lambda a b a a b lambd
  • bash:如何评估 PS1、PS2……? [复制]

    这个问题在这里已经有答案了 可能的重复 Echo 扩展 PS1 有什么办法可以 评估 吗 PS1 PS2等来自 bash 脚本中的内容 虽然 我可以使用替代方法来获取当前的所有元素PS1 我真的希望能够重用它的定义 而不是使用这些替代方法
  • PyQT QTreeWidget迭代

    我有两列QTreeWidget 一列代表一个网址列表第二个代表results 我已加载第一列中的网址列表 现在我想迭代此列表 并在迭代期间更改第二列中的文本 如何实现这一目标 您可以致电QTreeWidget invisibleRootIt
  • 为什么WebSocket“握手后”可以与HTTP共享80端口?

    我认为 端口指定服务器上的程序 当我们说to share a port 实际上意味着to have the requests processed by the same program listening on that port WebS
  • 如何使用 cygwin/mingw 在 Windows 上编译 PHP 扩展?

    我正在尝试建立RabbitMQ PHP 包装器和AMPQ PHP 包装器在 Windows 64 上使用 Cygwin 我已经成功构建了底层 C 库 librabbitmq dll 但我陷入了 phpize 步骤 phpize config
  • JPA OneToMany - 集合为空

    我正在尝试使用 JPA 建立双向关系 我了解维持双方关系是应用程序的责任 例如 图书馆有多本书 在图书馆实体中我有 Entity public class Library OneToMany mappedBy library cascade
  • 将 UIImage 裁剪为 alpha

    我有一个相当大的 几乎全屏的图像 我将在 iPad 上显示它 图像的透明度约为 80 我需要在客户端确定不透明像素的边界框 然后裁剪到该边界框 扫描 StackOverflow 上的其他问题并阅读一些 CoreGraphics 文档 我想我
  • 在没有组件的情况下在vue js中拖放

    我想在 vue js 中使用 html 5 拖放 我看到了 w3schools 关于拖放的教程 它在一个简单的 html 文件中工作 但在我的 vue 项目中不起作用 我的教程代码和链接是 w3schools 拖动 https www w3
  • 如何在不安装 MS Office 且不使用互操作库的情况下读取服务器中的 MS Office 文件?

    互操作库速度很慢 需要安装 MS Office 很多时候您不想在服务器上安装 MS Office 我想用阿帕奇兴趣点 但我在 NET 上 我只需要提取文件的文本部分 而不是在 Office 文件中创建或 存储信息 我需要告诉您 我有一个非常
  • JTable 将单元格颜色设置为特定值

    我正在尝试编写一种方法 对于给定的参数 值 颜色 在值等于 cellValue 的单元格的背景上设置颜色 我的方法实际上所做的是 它在整行的单元格背景上设置颜色 当我选择表格上的行时 我希望方法每次仅在特定列 其中 cellValue 等于