JXTreeTable 上的 ColorHighlighter - 如果谓词为 true,则更改选择颜色

2023-12-13

我使用带有多个 ColorHighlighters 的 JXTreeTable 来更改包含特定值的行的背景颜色。

如果选择一行,颜色将更改为 SelectionBackground。

是否可以在没有完整的新渲染器的情况下根据谓词或颜色荧光笔更改选择背景颜色?

编辑: 如果选择了一行并突出显示,则应该有另一种背景颜色,就像没有突出显示的行一样。

SSCCE

package testing;

import java.awt.Color;
import java.awt.Component;

import javax.swing.JFrame;
import javax.swing.JScrollPane;

import org.jdesktop.swingx.JXTreeTable;
import org.jdesktop.swingx.decorator.ColorHighlighter;
import org.jdesktop.swingx.decorator.ComponentAdapter;
import org.jdesktop.swingx.decorator.HighlightPredicate;
import org.jdesktop.swingx.treetable.AbstractMutableTreeTableNode;
import org.jdesktop.swingx.treetable.DefaultTreeTableModel;

public class JXTreeTableDemo extends JFrame {

    public static void main(String[] args) {

        JXTreeTableDemo gui = new JXTreeTableDemo();

        // get root node and 20 child nodes
        ArrayNode root = new ArrayNode(new Object[] { "root", "" });
        for (int i = 0; i < 20; i++) {
            root.add(new ArrayNode(new Object[] { "child", i }));
        }

        // get table and add root node
        JXTreeTable table = new JXTreeTable(new DefaultTreeTableModel(root));
        JScrollPane scrPane = new JScrollPane(table);

        // predicate to highlight all VAL%3==0
        HighlightPredicate predicateMod3 = new HighlightPredicate() {

            @Override
            public boolean isHighlighted(Component renderer,
                    ComponentAdapter adapter) {
                if ((int) adapter.getValue(1) % 3 == 0) {
                    return true;
                }
                return false;
            }

        };

        // predicate to highlight all VAL%4==0
        HighlightPredicate predicateMod4= new HighlightPredicate() {

            @Override
            public boolean isHighlighted(Component renderer,
                    ComponentAdapter adapter) {
                if ((int) adapter.getValue(1) % 4 == 0) {
                    return true;
                }
                return false;
            }

        };

        // initialize highlighter for %3 div 
        ColorHighlighter highlighterMod3 = new ColorHighlighter(predicateMod3,
                Color.BLUE, Color.WHITE);           
        // initialize highlighter for %4 div
        ColorHighlighter highlighterMod4 = new ColorHighlighter(predicateMod4,
                Color.GREEN, Color.WHITE);    
        // add highlighter 
        table.addHighlighter(highlighterMod3);
        table.addHighlighter(highlighterMod4);          
        gui.getContentPane().add(scrPane);
        gui.setVisible(true);
        gui.pack();
    }

    // concrete class of AbstractMutableTreeTableNodes
    static class ArrayNode extends AbstractMutableTreeTableNode {

        public ArrayNode(Object[] data) {
            super(data);
        }

        @Override
        public Object getValueAt(int column) {
            return getUserObject()[column];
        }

        @Override
        public void setValueAt(Object aValue, int column) {
            getUserObject()[column] = aValue;
        }

        @Override
        public int getColumnCount() {
            return 2;
        }

        @Override
        public Object[] getUserObject() {
            return (Object[]) super.getUserObject();
        }

        @Override
        public boolean isEditable(int column) {
            return true;
        }    
    }    
}

迄今为止, 姆约翰内斯


None

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

JXTreeTable 上的 ColorHighlighter - 如果谓词为 true,则更改选择颜色 的相关文章

  • Java Logger 未记录到 Netbeans 中的输出

    我正在 Netbeans 中使用 Maven 启动一个 Java 项目 我编写了一些代码来使用 Logger 类进行日志记录 但是 日志记录似乎不起作用 在程序开始时 我运行 Logger getLogger ProjectMainClas
  • 垃圾收集器如何在幕后工作来收集死对象?

    我正在阅读有关垃圾收集的内容 众所周知 垃圾收集会收集死亡对象并回收内存 我的问题是 Collector 如何知道任何对象已死亡 它使用什么数据结构来跟踪活动对象 我正在研究这个问题 我发现GC实际上会跟踪活动对象 并标记它们 每个未标记的
  • Android:文本淡入和淡出

    我已阅读此 stackoverflow 问题和答案 并尝试实现文本淡入和淡出 Android中如何让文字淡入淡出 https stackoverflow com questions 8627211 how to make text fade
  • Jframe 内有 2 个 Jdialogs 的 setModal 问题

    当我设置第一个选项时 我遇到了问题JDialog模态 第二个非模态 这是我正在尝试实现的功能 单击 测试对话框 按钮 一个JDialog有名字自定义对话框 主要的将会打开 如果单击 是 选项自定义对话框主 其他JDialog named 自
  • 提供节点名或服务名,或未知 Java

    最近我尝试运行我的 Java 项目 每当我运行它并将其打开到我得到的服务器地址时 Unable to determine host name java net UnknownHostException Caused by java net
  • 如何检查某个元素是否存在于一组项目中?

    In an ifJava中的语句如何检查一个对象是否存在于一组项目中 例如 在这种情况下 我需要验证水果是苹果 橙子还是香蕉 if fruitname in APPLE ORANGES GRAPES Do something 这是一件非常微
  • 如何在java中将日期格式从YYMMDD更改为YYYY-MM-DD? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我从机器可读代码中获取日期格式为 YYMMDD 如何将其更改为 YYYY MM DD 例如我收到 871223 YYMMDD 我想把它改成
  • 如何在.NET中使用java.util.zip.Deflater解压缩放气流?

    之后我有一个转储java util zip Deflater 可以确认它是有效的 因为 Java 的Inflater打开它很好 并且需要在 NET中打开它 byte content ReadSample sampleName var inp
  • hibernate 6.0.2.Final 和 spring boot 2.7.0 的entityManagerFactory bean 未配置问题

    所以最近我想升级我的 Spring Boot 项目项目的一些依赖项 特别是这些组件 雅加达 EE 9 弹簧靴2 7 休眠 6 0 2 Final 完成此操作后 所有更新和代码折射 更新将 javax 导入到 jakarta 以及一些 hib
  • Java Swing - 如何禁用 JPanel?

    我有一些JComponents on a JPanel我想在按下 开始 按钮时禁用所有这些组件 目前 我通过以下方式显式禁用所有组件 component1 setEnabled false 但是有什么办法可以一次性禁用所有组件吗 我尝试禁用
  • Spring @Cacheable 和 @Async 注解

    我需要缓存一些异步计算的结果 具体来说 为了克服这个问题 我尝试使用 Spring 4 3 缓存和异步计算功能 作为示例 我们采用以下代码 Service class AsyncService Async Cacheable users C
  • 在 Spring 上下文中查找方法级自定义注释

    我想知道的是 所有的类 方法Spring http en wikipedia org wiki Spring Framework注释为 Versioned的bean 我创建了自定义注释 Target ElementType METHOD E
  • 将 JScrollPane 添加到 JFrame

    我有一个关于向 Java 框架添加组件的问题 我有一个带有两个按钮的 JPanel 和一个添加了 JTable 的 JScrollPane 我想将这两个添加到 JFrame 中 我可以将 JPanel 添加到 JFrame 或将 JScro
  • 手动设置Android Studio的JDK路径

    如何为 Android Studio 使用自定义 JDK 路径 我不想弄乱 PATH 因为我没有管理员权限 是否有某个配置设置文件允许我进行设置 如果您查看项目设置 您可以从那里访问 jdk 在标准 Windows 键盘映射上 您可以在项目
  • 列表过滤器内的 Java 8 lambda 列表

    示例 JSON id 1 products id 333 status Active id 222 status Inactive id 111 status Active id 2 products id 6 status Active
  • 在java中以原子方式获取多个锁

    我有以下代码 注意 为了可读性 我尽可能简化了代码 如果我忘记了任何关键部分 请告诉我 public class User private Relations relations public User relations new Rela
  • java 中的蓝牙 (J2SE)

    我是蓝牙新手 这就是我想做的事情 我想获取连接到我的电脑上的蓝牙的设备信息并将该信息写入文件中 我应该使用哪个 api 以及如何实现 我遇到了 bluecove 但经过几次搜索 我发现 bluecove 不能在 64 位电脑上运行 我现在应
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • MiniDFSCluster UnsatisfiedLinkError org.apache.hadoop.io.nativeio.NativeIO$Windows.access0

    做时 new MiniDFSCluster Builder config build 我得到这个异常 java lang UnsatisfiedLinkError org apache hadoop io nativeio NativeIO
  • java'assert'和'if(){}else exit;'之间的区别

    java和java有什么区别assert and if else exit 我可以用吗if else exit代替assert 也许有点谷歌 您应该记住的主要事情是 if else 语句应该用于程序流程控制 而assert 关键字应该仅用于

随机推荐

  • 剪辑有时无法播放

    我有一个 Sound 类 其中包含一个方法 在调用该方法时 使用 Clip 对象播放声音 在本例中 clip public static void play clip stop The purpose of the first three
  • Python:获取操作系统语言

    在 Python 2 x 上获取当前 Windows 或 OSX 区域设置 id 的方法是什么 我想要一个 int 或 str 来告诉操作系统中哪种语言处于活动状态 不使用WinAPI 可以吗 这是与以下内容相关的文档localePytho
  • 超出 Google Drive API 配额

    我正在创建一个通道 用于接收我的应用程序上的用户的更改 主要问题是 在 2 3 个 webhooks 之后 我收到一条错误 指出用户已超出配额限制 这没有任何意义 因为我只收到了 2 条帖子 我在 ngrok 上看到过 我已经在谷歌控制台上
  • 三个变量作为热图

    我想将数据绘制为热图 其结构如下 X 1 1 1 1 1 1 1 1 1 1 Y 1 2 3 4 5 6 7 8 9 10 Z 0 2 0 33 0 1 0 25 0 0 0 9 0 75 0 88 0 44 0 95 x 和 y 轴应由
  • 通过 Retrofit2 使用 Multipart 和 JSON 键值对上传文件

    目前我们正在通过转换来加载文件 视频 音频 文本等 String bytes使用简单的 JSON 包括一些其他值及其键值对 就像下面这样 一些标头值 header geoDate point longitude 77 56246948242
  • Pandas 多列交叉

    我有一个数据框如下 data NAME JOHN MARY CHARLIE A 1 2 3 2 3 4 3 4 5 B 2 3 4 3 4 5 4 5 6 C 2 4 3 4 6 7 df pd DataFrame data df df N
  • 正则表达式删除撇号

    我的输入文本包含 就像本文 Frank s Reel Movie Reviews 中的那样 我该如何摆脱 我努力了 replace ig replace 但似乎 现在想要删除 我认为 可能编码为 utf 8 或其他 有任何想法吗 正则表达式
  • OpenSSL 验证返回代码:20(无法获取本地颁发者证书)

    我正在运行 Windows Vista 并尝试通过 https 连接以上传多部分形式的文件 但我在使用本地颁发者证书时遇到一些问题 我只是想找出为什么现在不起作用 并在解决后稍后返回我的 cURL 代码 我运行命令 openssl s cl
  • ArgumentParser 解析可选参数,未在 Parser 中定义[重复]

    这个问题在这里已经有答案了 我有以下几行来解析命令行参数 parser argparse ArgumentParser description Arguments for Creation of delivery report parser
  • C++ Win32 API 相当于 CultureInfo.TwoLetterISOLanguageName

    NET 框架可以轻松获取有关各种语言环境的信息 Win32 C API 有点难以理解 Win32 中是否有等效的函数来获取给定整数区域设置 ID 的两个字母的 ISO 语言名称 在 C 中我会这样做 System Globalization
  • Eclipse 中的 Unicode 字符

    我正在尝试从我的 Java 程序中打印漂亮的阴阳 System out println u262f Netbeans 中一切正常 默认设置 阴阳和其他英文内容都可以正确打印 我应该怎么做才能让 Eclipse 做同样的事情 使用默认的 Ec
  • 如何使用类方法作为回调

    我有一个类 其中包含我想用作回调的方法 我如何将它们作为参数传递 Class MyClass public function myMethod How should these be called this gt processSometh
  • 如何知道查询是否不返回文档

    我如何知道文档是否为空 我做不到len docs docs query stream for doc in docs do something 我需要知道是否没有与查询匹配的文档 谢谢你 Since stream 返回一个生成器 不会有一种
  • Powershell Convertfrom-string 自动将十进制解析为日期。我该如何防止这种情况?

    我尝试使用 ConvertFrom String 将数据从 cli 转换为 powershell 对象 但是当我这样做时 十进制数字会自动解析为日期 如下面的 P4 列所示 我该如何防止这种情况 plesk bin php handler
  • SKEffectNode 到 SKTexture?

    SKEffectionNodes有一个shouldRasterise 开关 将它们烘焙成位图 并且在受效果影响的底层节点发生更改之前不会更新它们 但是我找不到创建一个的方法SKTexture从这个光栅化的 图像 是否有可能获得SKTextu
  • 如何将图像死点与引导程序对齐

    我正在使用引导框架并尝试使图像水平居中但没有成功 我尝试过各种技术 例如将 12 个网格系统分成 3 个相等的块 例如 div class container div class row div class span4 div div cl
  • SQL数据库表中的多态性?

    目前 我的数据库中有多个表 其中包含相同的 基本字段 例如 name character varying 100 description text url character varying 255 但我对该基本表有多个专业化 例如tv s
  • 如何使用.NET检测Windows 64位平台?

    In a NET2 0 C 应用程序我使用以下代码来检测操作系统平台 string os platform System Environment OSVersion Platform ToString 这将返回 Win32NT 问题在于 即
  • 无法更改外键约束中使用的列

    当我尝试更改表时出现此错误 Error Code 1833 Cannot change column person id used in a foreign key constraint fk fav food person id of t
  • JXTreeTable 上的 ColorHighlighter - 如果谓词为 true,则更改选择颜色

    我使用带有多个 ColorHighlighters 的 JXTreeTable 来更改包含特定值的行的背景颜色 如果选择一行 颜色将更改为 SelectionBackground 是否可以在没有完整的新渲染器的情况下根据谓词或颜色荧光笔更改