为什么单元格渲染器经常扩展 JLabel?

2024-02-24

我注意到这很常见。例如 DefaultListCellRenderer、DefaultTableCellRenderer 和 DefaultTreeCellRenderer 都使用它。我在网上看到的许多自定义单元格渲染器也使用它。我想在代码中使用自定义 TableCellRenderer,但我对是否真的需要子类化 JLabel 感到困惑。子类化 JLabel 有什么好处?


The DefaultTableCellRenderer 的 API http://download.oracle.com/javase/7/docs/api/javax/swing/table/DefaultTableCellRenderer.html states:

table 类定义了一个单元格渲染器,并将其用作渲染表中所有单元格的橡皮图章;它渲染第一个单元格,更改该单元格渲染器的内容,将原点移动到新位置,重新绘制它,等等。标准JLabel组件不是设计用于这种方式使用的,我们希望避免触发revalidate每次绘制单元格时。这会大大降低性能,因为revalidate消息将沿着容器的层次结构向上传递,以确定是否有任何其他组件受到影响。由于渲染器仅在绘画操作的生命周期内具有父级,因此我们同样希望避免与遍历绘画操作的层次结构相关的开销。所以这个类重写了validate, invalidate, revalidate, repaint, and firePropertyChange方法为无操作并覆盖isOpaque方法只是为了提高性能。如果您编写自己的渲染器,请记住这一性能考虑因素。

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

为什么单元格渲染器经常扩展 JLabel? 的相关文章

随机推荐

  • mvc 3 razor 使用 jquery 调用服务器端函数

    我正在使用此代码从服务器获取部分视图 并将其放入 div 中 ajax type POST url MyControler MyAction success function result partialView html result e
  • 存储过程事务

    我以前从未使用过事务 提交和回滚 现在我需要使用一个 我已经在网上检查了一些示例 以确保我实际上正确使用了它 但我仍然不确定我的编码是否正确 我希望有人能够审查并建议我这是否正确 基本上我有两个数据库用于一个应用程序 一种是存档 意味着不再
  • 从字符串中检索图像 url

    我正在解析一个 xml 文件 我可以 NSLog 解析 但我的问题是我需要从这个 字符串 获取图像 url p a href http www bubblesurprise com WPRESS APP wp content uploads
  • 通过 XML 设置 AdMob 横幅以匹配父级宽度

    我正在尝试设置 AdMob 横幅广告以匹配其父宽度 我尝试作为示例
  • 接口如何使单元测试和模拟变得更容易?

    人们常说 接口使模拟和单元测试变得更加容易 接口如何帮助解决这个问题 这是接口的本质提供许多实现 从而启用模拟 特别是在集成测试中 您可以提供依赖系统模型的版本 例如 Web 服务 而不是实际调用一个依赖系统甚至一个模块 或者一个复杂且难以
  • 带 LDAP 的 BitNami GitLab Stack 5.1.0-2

    I am 配置 https github com gitlabhq gitlabhq blob master doc install installation md ldap authenticationLDAP 用于BitNami Git
  • 如何在本地部署ssrs?

    如何在本地计算机上部署 ssrs 我正在使用 ssrs 2005 我不确定 2005 年的情况 但在 2008 年 您右键单击项目 gt 属性并更改以下内容 目标数据集文件夹 文件夹名称 DataSet目标数据源文件夹 文件夹名称 数据源目
  • org.apache.axis2.AxisFault:在 Web 服务中传递对象数组时,未知类型无法序列化

    我创建了一个以 DTO 作为参数的 Web 服务 DTO 包含一个对象数组 我已经生成了 WSDL 框架和客户端 如果我传递字符串数组 我会尝试调用 Web 服务 Serialized array new String a n 效果很好 现
  • 如何在 WordPress 多站点中显示最近的全局帖子

    我在 ayp no 上运行一个 wordpress 多站点 我正在尝试找出一种方法来呈现所有子站点的徽标和所有博客的最新帖子 我知道有一个 wpmudev 高级插件 但我希望有一些编码我可以自己做 好吧 显然不是我自己 但至少在这里问一下并
  • 在 Swift 中更改 UITabBar selectedItem

    如何以编程方式更改 UITabBar 中的选定项目 Swift 3 及更高版本 从 Swift 3 开始 您还可以使用 tabBarController selectedIndex 0 or any other existing index
  • 优雅地崩溃内核

    后续 CUDA 停止所有其他线程 https stackoverflow com questions 3735786 cuda stop all other threads 我正在寻找一种在发生 不良情况 时退出内核的方法 编程手册说 NV
  • graphviz 中的子图布局

    我有显示两个子图的代码 graph rankdir LR subgraph cluster01 label t 0 a0 label A a1 label B a2 label C a5 label E a0 a1 a1 a2 a2 a0
  • 使用自定义表单替换部分 Outlook 客户端窗口

    我正在为 Outlook 客户端开发 VSTO 应用程序 我正在尝试在 Outlook 客户端窗口的部分中打开我的表单 该部分在下图中以红色突出显示 我认为我不能使用表单区域 因为它们替换了单个项目的视图 所以基本上我想做的是当我单击工具栏
  • 分段读取 CSV 文件的策略?

    我的计算机上有一个中等大小的文件 4GB CSV 但没有足够的 RAM 来读取该文件 64 位 Windows 上为 8GB 在过去 我只是将其加载到集群节点上并将其读入 但我的新集群似乎任意将进程限制为 4GB RAM 尽管每台机器的硬件
  • 提交到 App Store 的应用程序和应用程序更新必须使用 Xcode 5.1.1 或更高版本以及 iOS 7 SDK 构建

    今天使用新的 iTunes 连接网页时出现此错误 我的xCode版本是 我的SDK是 我之前提交的内容是使用旧网页进行的 现在新网页不断抱怨我的新版本出现此错误 有人看到同样的问题吗 好的 这可能是他们网站的问题 现在刚刚尝试使用清理后的版
  • Android-Studio-1.2.RC 关于 Square 的 Okio 库参考的 Proguard 警告

    使用 Android Studio 1 2 RC 我在 gradle 中启用了 proguard minifyEnabled true and added these rules to my proguard rules pro dontw
  • 为什么使用 OleDb 导入 Excel 时会忽略第一个空行

    使用 Net 的 OleDb 我尝试导入一个 Excel 表 其中第一行可以为空 我想保留 DataTable 中的空行 以便稍后能够将单元格映射到 Excel 样式的单元格名称 A1 A2 但无论我做什么 第一行都会被删除 Excel 文
  • 列出 Cucumber 中所有可用的标签

    是否有命令行选项可以列出黄瓜测试套件中的所有标签 例如 我想要这样的东西 cucumber show tags foo feature 那会给我类似的东西 ci development regression wip 对于单个文件 cucum
  • Spring 4 RestController JSON:根据请求“接受”标头,特征不可接受

    我正在使用 spring 4 1 1 RELEASE 并在 pom 中包含了 jackson core asl 1 9 13 和 jackson mapper asl 1 9 13 以使用 RestController 创建一个简单的应用程
  • 为什么单元格渲染器经常扩展 JLabel?

    我注意到这很常见 例如 DefaultListCellRenderer DefaultTableCellRenderer 和 DefaultTreeCellRenderer 都使用它 我在网上看到的许多自定义单元格渲染器也使用它 我想在代码