JTable 单元格闪烁

2023-12-29

我正在使用 Java 中的 Swing 库编写一个应用程序。我有一个扩展的表格组件JTable,在这个组件中我重写了该方法getTableCellRendererComponent,因为我为表格的单元格着色。我有一个自定义表模型(从默认表模型扩展),并且我已将表组件本身添加到 JPanel 中。这一切都有效。

现在我想向该表添加一些使单元格闪烁的功能。一次可能有多个单元格闪烁,即(第 1 行,第 2 列)和(第 3 行,第 4 列)处的单元格。

这可以吗?任何可以让我开始的提示将不胜感激。


我找到一篇文章来回答你:

http://www.devx.com/DevX/10MinuteSolution/17167/0/page/1 http://www.devx.com/DevX/10MinuteSolution/17167/0/page/1

该页面提供了源代码供下载。

基本上它使用以下方法来通知表及时更新单元格。

JTable.tableChanged(new TableModelEvent(table.getModel(), firstRow, lastRow, column));

读完他的代码后,我整理了一个更简单版本的他的代码,你可以更改我的代码或使用他的代码(更优雅但也更复杂)。

public class FlashCellTable
{
    public static Color color;

    public static void main(String[] args)
    {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setSize(800, 600);

        final JTable table = new JTable(4, 4);
        table.setDefaultRenderer(Object.class, new MyFlashingCellRenderer());
        table.setValueAt("Flashing", 0, 0);
        frame.getContentPane().add(new JScrollPane(table));

        final long startTime = System.currentTimeMillis();

        Thread thread = new Thread()
        {
            @Override
            public void run()
            {
                while (true)
                {
                    long now = System.currentTimeMillis();
                    long second = (now - startTime) / 1000;
                    color = second / 2 * 2 == second ? Color.red : Color.blue;

                    System.out.println("FlashCellTable.run");

                    SwingUtilities.invokeLater(new Runnable()
                    {
                        public void run()
                        {
                            table.tableChanged(new TableModelEvent(table.getModel(), 0, 0, 0));  
                        }
                    });
                    try
                    {
                        Thread.sleep(1000);
                    }
                    catch(InterruptedException e)
                    {
                        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                    }
                }
            }
        };

        thread.start();

        frame.setVisible(true);
    }

    public static class MyFlashingCellRenderer extends DefaultTableCellRenderer
    {
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
                                                       int row, int column)
        {
            JLabel label =
                (JLabel)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

            if ("Flashing".equals(value))
            {
                label.setBackground(color);
            }
            else
            {
                label.setBackground(Color.white);
            }
            return label;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JTable 单元格闪烁 的相关文章

  • 获取文件的锁

    我想在对特定文件开始 threo read 时获取文件上的锁定 以便其他应用程序无法读取已锁定的文件并希望在线程终止时释放锁定文件 您可以获得一个FileLock https docs oracle com javase 8 docs ap
  • Android 中的列表(特别是 RecyclerView 和 CardView)如何工作

    请原谅我问这个问题 但我是 Android 开发新手 尽管我正在尝试了解developer android com 网站上的基础知识 但大多数示例 即使他们说它们是为 Android Studio 构建的 尚未设置为使用 Gradle 因此
  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • 当路径的点超出视野时,Android Canvas 不会绘制路径

    我在绘制路径时遇到了 Android Canvas 的一些问题 我的情况是 我有一个相对布局工作 如地图视图 不使用 google api 或类似的东西 我必须在该视图上绘制一条路径 canvas drawPath polyPath bor
  • (Java) App Engine 中的静态文件无法访问

    The 示例文档 http code google com appengine docs java gettingstarted staticfiles html表示您只需将文件放在 war 或子目录 中 并且应该可以从主机访问它们 只要它
  • HAProxy SSL终止+客户端证书验证+curl/java客户端

    我希望使用我自己的自签名证书在 HAProxy 上进行 SSL 终止 并使用我创建的客户端证书验证客户端访问 我通过以下方式创建服务器 也是 CA 证书 openssl genrsa out ca key 1024 openssl req
  • 如何在java Spring Boot中实现通用服务类?

    我有许多具有重复代码的服务 我想知道如何实现通用服务 以便我的所有服务都可以扩展它 服务接口示例 重复代码 Service public interface IUserService List
  • 为什么Iterator接口没有add方法

    In IteratorSun 添加了remove 方法来删 除集合中最后访问的元素 为什么没有add方法来向集合中添加新元素 它可能对集合或迭代器产生什么样的副作用 好的 我们开始吧 设计常见问题解答中明确给出了答案 为什么不提供 Iter
  • org/codehaus/plexus/archiver/jar/JarArchiver(不支持的major.minor版本49.0)-Maven构建错误

    下午大家 我在尝试构建项目时收到上述错误 我很确定这与使用 Java 1 6 编译的 Maven 最新更新有关 而我们尝试构建的项目是 1 4 项目 在此之前的插件工作没有问题 因此我将以下内容添加到 POM xml 文件中以尝试强制使用现
  • 虽然我的类已加载,但 Class.forName 抛出 ClassNotFoundException

    代码如下 它的作用是加载我放在主目录中的 jar 文件中的所有类 import java io File import java util jar JarFile import java util jar JarEntry import j
  • Java:如何确定文件所在的驱动器类型?

    Java 是否有一种独立于平台的方法来检测文件所在的驱动器类型 基本上我有兴趣区分 硬盘 可移动驱动器 如 USB 记忆棒 和网络共享 JNI JNA 解决方案不会有帮助 可以假设 Java 7 您可以使用 Java 执行 cmd fsut
  • 寻找局部最小值

    下面的代码正确地找到了数组的局部最大值 但未能找到局部最小值 我已经进行了网络搜索 以找到找到最小值的最佳方法 并且根据这些搜索 我认为我正在使用下面的正确方法 但是 在几天的时间里多次检查每一行之后 下面的代码中有一些我仍然没有看到的错误
  • 如何通过 Android 按钮单击运行单独的应用程序

    我尝试在 Android 应用程序中添加两个按钮 以从单独的两个应用程序订单系统和库存系统中选择一个应用程序 如图所示 我已将这两个应用程序实现为两个单独的 Android 项目 当我尝试运行此应用程序时 它会出现直到正确选择窗口 但是当按
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • Play.application() 的替代方案是什么

    我是 Play 框架的新手 我想读取conf文件夹中的一个文件 所以我用了Play application classloader getResources Data json nextElement getFile 但我知道 play P
  • Java - 从 XML 文件读取注释

    我必须从 XML 文件中提取注释 我找不到使用 JDOM 或其他东西来让它们使用的方法 目前我使用 Regex 和 FileReader 但我不认为这是正确的方法 您可以使用 JDOM 之类的东西从 XML 文件中获取注释吗 或者它仅限于元
  • JMS 中的 MessageListener 和 Consumer 有什么区别?

    我是新来的JMS 据我了解Consumers能够从队列 主题中挑选消息 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息吗 这样的实际用途是什么MessageListener 编辑 来自Me
  • HttpClient请求设置属性问题

    我使用这个 HttpClient 库玩了一段时间 几周 我想以某种方式将属性设置为请求 不是参数而是属性 在我的 servlet 中 我想使用 Integer inte Integer request getAttribute obj 我不
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要

随机推荐

  • 如何在 Swift 中检索对象的类型? [复制]

    这个问题在这里已经有答案了 我似乎无法在 Swift 中找到返回对象类型的函数或方法 如何在 Swift 中检索对象的类型或类 我尝试使用 Obj C 类 但显然不起作用 在Python中你有类似的东西type or isinstance
  • 如何为每个版本提供 2 种风格和 2 种不同的密钥配置以用于调试版本?

    背景 我认为 Google 登录存在一个问题 该问题与我们对我们开发的 2 种不同风格的应用程序使用相同的密钥配置这一事实有关 原因是两者在调试和发布时似乎具有相同的 SHA1 该问题仅存在于第二个版本的发行版本中 在第一种风格的构建和调试
  • TestNG中BeforeClass和BeforeTest的区别

    从 TestNG 官方文档中我们得知 BeforeClass 带注释的方法将在调用当前类中的第一个测试方法之前运行 BeforeTest 带注释的方法将在属于该类内部的任何测试方法之前运行
  • C# 调用 C++ DLL 传递指针到指针参数

    你们能帮我解决以下问题吗 我有一个 C 函数 dll 它将由另一个 C 应用程序调用 我需要的功能之一如下 struct DataStruct unsigned char data int len DLLAPI int API ReadFi
  • pandas.DataFrame 子类的属性在 pickle 后消失

    我试图将属性添加到 pandas DataFrame 的子类中 它们在酸洗和取消酸洗后消失 import cPickle import pandas as pd class MyClass pd DataFrame def init sel
  • 使用 C# 反序列化具有一个空白键的深度嵌套 Json

    我正在尝试将下面的嵌套 Json 反序列化为自定义 c 类型 该类型也在下面进行了描述 但我不断将反序列化对象中的路径键设置为 null 下面是代码 任何有关如何正确反序列化的建议都非常感谢 Json swagger 2 0 info ve
  • Android:strings.xml的默认语言

    我将翻译我的应用程序 strings xml 文件 strings xml 文件的默认语言是什么 因为现在我需要支持意大利语 我现在编写 strings xml 的语言 和英语 我应该使用 string xml 来表示英语并创建 资源 值
  • 带有消息队列的任务处理状态

    我正在开发一个产品数据导入系统 该系统从外部源下载产品数据 将其转换为正确的模式 并存储结果 本质上是一个 ETL 系统 系统处理的核心消息类型是 ImportProductCommand 它指定要导入的产品和来源 然而 导入命令很少单独发
  • 如何使用 JWT + HttpOnly Cookie 正确刷新令牌?

    我已经使用 JWT HttpOnly Cookies 在我的 AspNetCore API 应用程序中成功设置了身份验证 灵感来自this https stormpath com blog token authentication asp
  • Rails 3:无法验证 CSRF 令牌的真实性

    当我尝试通过 REST 客户端发布数据时 我收到这样的警告 Warning Can t verify CSRF token authenticity 怎么解决这个问题 我相信你正在努力做一个POST from a link 默认情况下lin
  • 如何将 PHP 的 stream_select() 与 zlib 过滤器结合使用?

    我目前有一个用 PHP 编写的服务器守护进程 它接受传入连接并使用以下命令为它们创建网络流stream socket 函数并使用轮询活动流stream select 我希望能够添加一个 zlib 过滤器 使用string filter ap
  • Django 版本 1.5:“url”需要非空的第一个参数。 Django 1.5 中的语法发生了变化

    我开始使用 Django 1 5 版 但我的旧代码出现了问题 a href h3 post title h3 a 错误 url 需要非空的第一个参数 Django 1 5 中的语法发生了变化 请参阅文档 文件 一个值得注意的已弃用功能是转向
  • 当单词以 n-gram 开头时,Elasticsearch Edge NGram 分词器得分更高

    假设与 Edge NGram Tokenizer 有以下映射 settings analysis analyzer autocomplete analyzer tokenizer autocomplete tokenizer filter
  • 不同活动中的相同导航抽屉

    我制作了一个工作导航抽屉 如教程中所示开发者 android com http developer android com网站 但现在 我想使用一个导航抽屉 它是我在 NavigationDrawer class 中为我的应用程序中的多个活
  • Python、Unicode 和 Windows 控制台

    当我尝试printWindows 控制台中的字符串 有时我会收到一条错误消息UnicodeEncodeError charmap codec can t encode character 我认为这是因为 Windows 控制台无法处理所有
  • mediawiki mathjax需要使用转义$x$

    我将 MediaWiki 与 MathJax 一起使用 因为很多页面都有数学方程 但在某些页面上 我还需要按原样显示字符串 x 有什么办法可以转义 x 这样它就不会调用 MathJax 并显示为斜体 x 吗 MathJax 支持 来转义表达
  • 在 swift 中如何理解设置为 private 的全局变量?

    我正在完成一本书中的核心数据练习 它首先创建一个单例的帮助器类 我知道全局变量可以在类的范围之外创建 并且可以在整个项目中访问 但是令我困惑的是 书中的一个示例创建了一个全局变量并将其设置为私有 我假设通过将变量设置为私有 它只能由该特定类
  • Gekko 返回错误的成功解决方案

    以下代码返回Successful Solution Objective 0 但这不是最佳解决方案 最优解是 6 通过阅读其他问题 我认为这是在目标函数中使用非 Gekko 函数的问题 但我使用的唯一非 Gekko 函数是np matmul
  • Laravel Passport 令牌生命周期

    我不明白我做错了什么 我无法设置令牌过期时间
  • JTable 单元格闪烁

    我正在使用 Java 中的 Swing 库编写一个应用程序 我有一个扩展的表格组件JTable 在这个组件中我重写了该方法getTableCellRendererComponent 因为我为表格的单元格着色 我有一个自定义表模型 从默认表模