更改 JTable 中特定行的颜色

2023-12-14

我正在寻找如何更改我的某些行的颜色JTable其索引位于称为的整数向量中Notfoundrow,但是我遇到的问题是表中的所有行都将颜色更改为红色!

这是我的代码:

package essai_trafficclass;
import java.awt.Color;
import java.awt.Component;
import java.util.ArrayList;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class MonCellRenderer extends DefaultTableCellRenderer {

    public static ArrayList<Integer> Notfoundrow1 = OneWayRelation.Notfoundrow;

    public Component getTableCellRendererComponent(JTable table, Object value,
                    boolean isSelected, boolean hasFocus, int row, int column) {
        Component cell = super.getTableCellRendererComponent(table, value,
                        isSelected, hasFocus, row, column);
        int L = 0;
        while (L < Notfoundrow1.size()) {
            System.out.println("la valeur du vecteur " + Notfoundrow1.get(L));
            if (row == Notfoundrow1.get(L) && column == 1) {
                cell.setBackground(Color.RED);
            } else if (row == Notfoundrow1.get(L) && column == 1) {
                cell.setBackground(Color.RED);
            } else {
                cell.setBackground(Color.WHITE);
            }
            L++;
        }
        return cell;
    }
}

然后我通过以下方式调用这个类:

tableM.setDefaultRenderer(Object.class, new MonCellRenderer());    

tableM是我想要更改其行颜色的表。

感谢您的任何帮助。


你可以大大简化你的逻辑......

而不是你的while循环,利用 API 的可用功能...

if (column == 1 || Notfoundrow1.contains(row)) {
    setBackground(Color.RED);
} else {
    setBackground(Color.WHITE);
}

enter image description here

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;

public class TestCellRenderer02 {

    public static void main(String[] args) {
        new TestCellRenderer02();
    }
    private List<Integer> notFound = new ArrayList<>(25);

    public TestCellRenderer02() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                Random rand = new Random(System.currentTimeMillis());
                DefaultTableModel model = new DefaultTableModel(new Object[]{"A", "B"}, 0);
                for (int index = 0; index < 100; index++) {
                    model.addRow(new Object[]{index, index});
                    if (rand.nextBoolean()) {
                        notFound.add(index);
                        System.out.println("Not found @ " + index);
                    }
                }

                JTable table = new JTable(model);
                table.setDefaultRenderer(Object.class, new MonCellRenderer());

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new JScrollPane(table));
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class MonCellRenderer extends DefaultTableCellRenderer {

        public Component getTableCellRendererComponent(JTable table, Object value,
                        boolean isSelected, boolean hasFocus, int row, int column) {
            super.getTableCellRendererComponent(table, value,
                            isSelected, hasFocus, row, column);

            if (column == 1 || notFound.contains(row)) {
                setBackground(Color.RED);
            } else {
                setBackground(Color.WHITE);
            }
            return this;
        }
    }
}

ps-您可能还想阅读Java 编程语言的代码约定

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

更改 JTable 中特定行的颜色 的相关文章

  • Guice 忽略注入构造函数参数上的 @Nullable

    我正在使用 Guice v 3 0 并且有一个值被注入到构造函数中 该值可以为 null 因此我在构造函数中使用 Nullable 来自 javax annotations 注释了该参数 public MyClass Parameter1
  • 获取文件的锁

    我想在对特定文件开始 threo read 时获取文件上的锁定 以便其他应用程序无法读取已锁定的文件并希望在线程终止时释放锁定文件 您可以获得一个FileLock https docs oracle com javase 8 docs ap
  • 使用 WebDriver 单击新打开的选项卡中的链接

    有人可以在这种情况下帮助我吗 场景是 有一个网页 我仅在新选项卡中打开所有指定的链接 现在我尝试单击新打开的选项卡中的任何一个链接 在下面尝试过 但它仅单击主 第一个选项卡中的一个链接 而不是在新选项卡中 new Actions drive
  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • Android 中 localTime 和 localDate 的替代类有哪些? [复制]

    这个问题在这里已经有答案了 我想使用从 android API 获得的长值 该值将日期返回为长值 表示为自纪元以来的毫秒数 我需要使用像 isBefore plusDays isAfter 这样的方法 Cursor managedCurso
  • Spring数据中的本机查询连接

    我有课 Entity public class User Id Long id String name ManyToMany List
  • 是否可以从 servlet 内部以编程方式设置请求上下文路径?

    这是一个特殊情况 我陷入了处理 企业 网络应用程序的困境 企业应用程序正在调用request getContext 并将其与另一个字符串进行比较 我发现我可以使用 getServletContext getContextPath 获取 se
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • 如何从日期中删除毫秒、秒、分钟和小时[重复]

    这个问题在这里已经有答案了 我遇到了一个问题 我想比较两个日期 然而 我只想比较年 月 日 这就是我能想到的 private Date trim Date date Calendar calendar Calendar getInstanc
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • Play.application() 的替代方案是什么

    我是 Play 框架的新手 我想读取conf文件夹中的一个文件 所以我用了Play application classloader getResources Data json nextElement getFile 但我知道 play P
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • 如何从 Ant 启动聚合 jetty-server JAR?

    背景 免责声明 I have veryJava 经验很少 我们之前在 Ant 构建期间使用了 Jetty 6 的包装版本来处理按需静态内容 JS CSS 图像 HTML 因此我们可以使用 PhantomJS 针对 HTTP 托管环境运行单元
  • 我可以限制分布式应用程序发出的请求吗?

    我的应用程序发出 Web 服务请求 提供商处理的请求有最大速率 因此我需要限制它们 当应用程序在单个服务器上运行时 我曾经在应用程序级别执行此操作 一个对象跟踪到目前为止已发出的请求数量 并在当前请求超出允许的最大负载时等待 现在 我们正在
  • 如何让 Emma 或 Cobertura 与 Maven 一起报告其他模块中源代码的覆盖率?

    我有一个带有 Java 代码的多模块 Maven 设置 我的单元测试在其中一个模块中测试多个模块中的代码 当然 这些模块具有相互依赖性 并且在测试执行之前根据需要编译所有相关模块中的代码 那么 如何获得整个代码库覆盖率的报告 注意 我不是问
  • 如何在Java中对对象数组进行字段级别排序以进行等级比较?

    In Java Class StudentProgress String Name String Grade CTOR goes here main class main method StudentProgress arrayofObje
  • HttpClient请求设置属性问题

    我使用这个 HttpClient 库玩了一段时间 几周 我想以某种方式将属性设置为请求 不是参数而是属性 在我的 servlet 中 我想使用 Integer inte Integer request getAttribute obj 我不

随机推荐

  • 如何从文本文件中读取单词并将其添加到字符串数组中?

    这是我的函数 调用方式为 getWord words void getWord char words MAXWORDLENGTH int i char newWord MAXWORDLENGTH FILE file file fopen w
  • 如何使用 android 列出 ftp 目录?

    已解决 如何获取 ftp 服务器上的文件和文件夹列表 我知道如何连接和上传文件 但不知道如何获取目录列表 try FTPClient ftpClient new FTPClient ftpClient connect InetAddress
  • 如何检索cameraID并使用setTorchMode?

    Android M 最近问世了 它现在有一个内置的相机灯功能 称为 setTorchMode 我很好奇它是如何工作的 因为参数是 字符串cameraID 布尔值真 假 布尔值显然决定了灯是打开还是关闭 但是如何获取cameraID呢 我知道
  • 如何运行 JAR 文件

    我创建了一个像这样的 JAR 文件 jar cf Predit jar 我通过双击这个 JAR 文件来运行它 它不起作用 所以我从 DOS 提示符下运行它 如下所示 java jar Predit jar 它引发了 无法加载主类 异常 所以
  • ffmpeg:转换前后的视频长度不同

    我有一组 mov 视频 需要转换为 mp4 格式 我正在使用 ffmpeg 并运行以下命令 ffmpeg i Banking mov vsync async sameq ac 1 ab 64k ar 44100 Banking mp4 输入
  • 覆盖从 NPM @Types 下载的 V2.2.2 中的 TypeScript 类型

    我正在使用该组件反应路由器引导程序和定义来自绝对打字 我的问题是下载的定义与组件不匹配 我创建了一个拉取请求来解决这个问题 但由于我不知道什么时候会修补它 所以我必须覆盖它 我不能只编辑位于的类型定义文件node modules types
  • 使用 MySqlConnector for .NET 是否完全支持 TransactionScope 对象?

    我正在编写单元测试 技术上是集成测试 因为我正在连接到数据库 并且我想在测试内的事务中创建记录 并在测试完成后回滚所有数据库修改 我的想法是 我将通过一个 API 调用创建另一个 API 调用希望在数据库中找到的记录 我有以下有效的代码 s
  • CSVHelper BadDataFound 在有效的 csv 中

    我们的客户开始报告从 CSV 文件导入数据时出现的错误 看到 csv 文件后 我们决定从自定义 CSV 解析器切换到 CSVHelper 但 CSV Helper 无法读取一些有效的 CSV 文件 用户可以将任何 csv 文件加载到我们的应
  • 当相关子项发生更改时,SQLAlchemy 会更新父项

    我正在尝试将一个实体建模为一个或多个一对多关系 这样它就是last modified属性更新 当 添加或删除子项 一个孩子被修改 实体本身被修改 我整理了以下最小示例 class Config Base tablename config I
  • Android 5 中的意图操作调用

    我有这段代码 在 Android 4 4 及更早版本中运行良好 Intent intent new Intent Intent ACTION CALL intent setPackage com android phone intent s
  • 在 Oracle APEX v4.2.2 中通过 Ajax 调用 Oracle 函数进行现场验证

    我正在使用 Oracle 11g 和 Oracle Apex v4 2 2 我想知道如何在动态操作中通过 ajax 调用来调用 Oracle 函数的最佳方式 我基本上有一个带有六个参数的函数 它们返回 INVALID 或 VALID 的结果
  • asm更改cmd背景颜色

    我编写了更改文本颜色的部分 但我找不到更改背景颜色的方法 此代码用于 tasm 汇编 model small stack 256 data ent db 0ah 0dh array db 2 4 5 6 db 7 8 9 5 db 1 2
  • SSIS 数据分析任务编辑器返回错误代码

    我正在尝试使用 Visual Studio 2017 运行 SSIS 工具 数据分析任务 可以看到流程运行成功 但是 当我单击 打开配置文件查看器 时 会出现此错误代码 数据配置文件查看器遇到意外错误 必须 关闭 错误消息是 无法加载文件或
  • 将二进制转换为 ASCII,反之亦然

    使用此代码获取字符串并将其转换为二进制 bin reduce lambda x y 256 x y ord c for c in hello 0 这输出 0b110100001100101011011000110110001101111 如
  • 如何将 XML 转换为 java 值对象?

    有哪些开源库可以将 XML 转换为 java 值对象 在 Net 中 有一种方法可以通过 xml 序列化和属性轻松实现此目的 我想象java中有一些并行的东西 我知道如何使用 DOM 或 SAX 解析器来做到这一点 但我想知道是否有更简单的
  • 如何在 Windows Vista/7/8 上以编程方式启动 SFC?

    我一直在努力解决这个问题克里斯 艾弗森 Chris Iverson 在 Stackoverflow 上提出的另一个问题 我想启动SFC the 系统文件检查器工具 以编程方式 它适用于 Windows XP private void Run
  • Android 上 Fragment 之间的通信

    我正在尝试构建一个具有两个选项卡的 Android 应用程序 一个用于文本字段 按钮和 TreeMenu 其中每个元素都有一个与其关联的复选框 另一个用于列表 我也在使用 ActionBarSherlock 我已经在单个主要活动中成功编写了
  • 定义分组项目的 id 列表

    我有一个小问题 我只是不明白 问题是什么以及如何解决它 例如我有一个 Coldfusion 变量 account code 首先 这段代码如下所示 100 001 001 当然有很多 我有这个变量的一些值 比如sum nettotal 和我
  • 如果文件名为 jsx,webpack 找不到模块

    当我这样写 webpack config js 时 module exports entry index jsx output filename bundle js module loaders test jsx exclude node
  • 更改 JTable 中特定行的颜色

    我正在寻找如何更改我的某些行的颜色JTable其索引位于称为的整数向量中Notfoundrow 但是我遇到的问题是表中的所有行都将颜色更改为红色 这是我的代码 package essai trafficclass import java a