更改 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 中特定行的颜色 的相关文章

随机推荐

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

    这是我的函数 调用方式为 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