找到 JTable 单元格并绘制它

2023-12-14

我有这些数据:

  1. 行号
  2. 列数
  3. 细胞值

我的问题是:

  1. 如何使用这些数据找到单元格?
  2. 我怎样才能改变背景JTable鼠标按下事件时单元格并在鼠标释放事件时返回正常背景?
  3. 我可以在没有用户交互的情况下突出显示 JTable 吗?这意味着单击其他一些 JTable 单元格,我想通过使用给定信息突出显示另一个 JTable 单元格,这可能吗?

假设您的意思是找到用于命中检测的单元格的矩形:

 Rectangle cell = table.getCellRect(row, column, false);

对于背景更改,在 mouseListener 代码中,设置一个被击中的单元格的标记,在按下/释放时重新绘制,并实现一个检查标记的自定义渲染器。一些伪代码

 void mousePressed(MouseEvent ev) {
     // get the row/column from mouse location
     int column = table.columnAtPoint(ev.getPoint());
     int row = table.rowAtPoint(ev.getPoint());
     // set some kind of marker, f.i. as client property
     table.putClientProperty("hitColumn", column);
     table.putClientProperty("hitRow", row);
     // get the rectangle for repainting 
     Rectangle cell = table.getCellRect(column, row, false);
     table.repaint(cell);
 }

 void mouseReleased(MouseEvent ev) {
     // similar to reset the marker
     ....
     table.repaint(cell);
 }

 // custom renderer extends DefaultTableCellRenderer

 JComponent getTableCellRendererComponent(..., row, column ...) {
     Integer hitColumn = table.getClientProperty("hitColumn");
     Integer hitRow = ....
     if (hitColumn != null && column == hitColumn && hitRow ....) {
        setBackground(hitColor);
     } else {
         // force super to handle the background 
         setBackground(null);
     }
     return super.getTableCellRendererComponent(....);
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

找到 JTable 单元格并绘制它 的相关文章

随机推荐

  • jQuery - 从文本区域选择所有文本

    我怎样才能做到当您在文本区域内单击时 它的整个内容都会被选中 最终 当您再次单击时 取消选择它 为了防止用户在每次尝试使用鼠标移动插入符号时选择整个文本时感到恼火 您应该使用focus事件 而不是click事件 以下内容将完成这项工作并解决
  • Mongoose 和引用 UUID 数组不转换

    使用 mongoose uuid 库时 我可以为模式设置 UUID 类型 因此当我读取数据时 它采用字符串 utf 8 格式 而当我保存数据时 它采用 UUID ObjectID BSON 类型 4 格式 这对于我的架构中的顶级或平面直接值
  • 如何在C++中使用虚函数来实现多态行为?

    我对 C 的这些重要功能很陌生 我已经在这里阅读了有关这些主题的一些问题 答案 并用谷歌搜索了一些文档 但我仍然对此感到困惑 如果有人能给我建议一些好的在线教程或书籍章节 让我轻松而缓慢地理解这个概念 并从基础开始 那就太好了 另外 如果有
  • 使用不同类型的行反序列化 XML C#

    反序列化 XML 时遇到问题 无法理解如何制作财产data根据 xml 属性不同idxds 生成一个公共属性data结合了数据 UserInfo 数据 UserTransactions 的属性 尝试过解决方案this线程但没有运气 XML
  • jQuery:快速滚动 - 可能吗?

    我有一个带有固定标题的可滚动表格 是否可以在滚动条上进行 捕捉滚动 这意味着表格行不会逐像素滚动 而是捕捉响应其行高 以便更好地查看 答案是 是 您可以调整 scrollTop 并使其成为您想要的任何内容以响应 onscroll 事件 阅读
  • 对对象的所有引用

    Java中是否可以获取一个对象的所有引用 我需要检查的是对象是否已删除所有回调订阅 Thanks 这可以通过JVMTI通常由堆分析器完成 然而 它不能在 Java 内部完成
  • 在 C# 中取消/中止任务

    我有一个 C 程序 它执行一些服务调用 我需要在这个程序中添加一些代码 以便在单击按钮 winform 时能够停止这些服务调用 例如 如果调用时间太长并且用户感到无聊 困难在于我无法修改执行调用的代码块 为此 我计划使用 Unity 框架进
  • 递归查找当前目录下所有视图私有文件的命令

    递归查找当前目录中所有视图私有文件的clearcase命令是什么 常用的命令是基于cleartool ls ct lsprivate 但它仅适用于动态视图 不适用于快照视图 ct ls rec view only 至少 它在快照和动态视图中
  • 如何在tomcat 7中加密server.xml的密码

    我想消化 加密 tomcat 的 server xml 密码 我在互联网上看到了一些代码 这些代码导致我在资源标签内添加工厂 正如你在下面看到的 不幸的是 我已经在工厂中添加了 Atomikos 但不允许我添加第二个工厂 您能否帮助我使用第
  • 为什么后台服务运行时会停止?

    我的 Android 应用程序中有一个后台服务 其中有一个线程经常监听最近运行的任务 我的服务会覆盖这两个服务onCreate and onStartCommand 方法 当我尝试打开一些应用程序时 例如Gallery Camera等等 服
  • 如何将非流文件加入DStream?

    我想将 DStream 中的每个 RDD 与非流式 不变的参考文件连接起来 这是我的代码 val sparkConf new SparkConf setAppName LogCounter val ssc new StreamingCont
  • 使用插入排序有充分的理由吗?

    对于通用排序 答案似乎是否定的 因为快速排序 合并排序和堆排序在平均情况和最坏情况下往往表现更好 然而 插入排序似乎在增量排序方面表现出色 即在很长一段时间内一次向列表添加一个元素 同时保持列表排序 特别是如果插入排序是作为链表实现的 O
  • Python IDLE 中的表情符号/表情符号

    我无法编码和显示 U0001f600 U0001f650 范围内的字符 它们被称为表情符号或表情符号 用于所有社交媒体 Python错误信息 File C Python Python342x64 lib encodings cp1251 p
  • 暴露 Docker 容器端口

    我一直在尝试通过 ip 连接到 docker 容器 但仍然不成功 当我使用 docker检查容器id 时 我得到这个结果 我的虚拟盒子默认设置为 有人可以帮我解决这个问题吗 运行 docker 时 您可以指定外部世界可以访问的端口 基本语法
  • 合并列以删除 NA

    我在 R 中有一些列 对于每一行 其中只有一个值 其余的将为 NA 我想将它们合并到具有非 NA 值的一列中 有谁知道一个简单的方法来做到这一点 例如我可以有如下 data lt data frame a c A B C D E x c 1
  • React Native 溢出 Touchable 在 Android 中不起作用

    请看看我的世博小吃 下拉项在 iOS 中是可触摸的 但在 Android 中则不可触摸 固定容器的高度 灰色框 会导致此问题 但我需要保持工具栏的固定高度 我尝试过使用react native view overflow包但没有运气 这个需
  • 对于彩票调度程序来说,比 LCG 更好的(伪)随机数生成器是什么?

    我想设计一个彩票调度程序 我需要一个非常好的 伪 随机数生成器 类似于 LCG 但我想知道是否还有其他更好的选择 我专门寻找用 C 编写的随机生成器 LCG代码 unsigned long lcg rand unsigned long a
  • 尽管有 .gitignore 文件,仍强制添加

    有没有办法强制git尽管添加文件 gitignore file See man git add f force Allow adding otherwise ignored files 所以运行这个 git add force my ign
  • 如何在设备睡眠时保持 ChromeCast 会话处于活动状态?

    我有一个可以将本地媒体内容流式传输到 Chromecast 接收器的应用程序 这在大多数情况下都有效 除了当设备处于睡眠状态时and如果不使用外部电源 会话将在大约 5 分钟后终止 断开连接 从屏幕变黑时开始测量 我已经在这里看过这个问题
  • 找到 JTable 单元格并绘制它

    我有这些数据 行号 列数 细胞值 我的问题是 如何使用这些数据找到单元格 我怎样才能改变背景JTable鼠标按下事件时单元格并在鼠标释放事件时返回正常背景 我可以在没有用户交互的情况下突出显示 JTable 吗 这意味着单击其他一些 JTa