为 Nimbus 外观设计简单的单元渲染器

2024-05-26

我有一个简单的单元格渲染器,它由一些组成JLabels(渲染器本身扩展JPanel)并且我正在尝试让它在 Nimbus 的外观和感觉中合理地渲染。基本上发生的事情是在lighter行(正如 Nimbus 所具有的交替行着色),我的特定单元格渲染器使用表格背景颜色(比浅色和深色的颜色要暗得多)row颜色)。在我的渲染器中我这样做:

if (isSelected) {
    setBackground(table.getSelectionBackground);
}
else {
    setBackground(table.getBackground);
}

如果我注释掉整个代码块,那么我的所有行都会变暗row颜色(不是表格背景,但也不是替代颜色)。我不确定我是否明白发生了什么!上面的代码片段是如何产生具有不同背景颜色的单元格的?是个table.getBackground在调用我的方法之间颜色发生变化吗?

我尝试过使用这段代码:

Color alternateColor = sun.swing.DefaultLookup.getColor(
                         peer, 
                         peer.getUI, 
                         "Table.alternateRowColor");
if (alternateColor != null && row % 2 == 0)
    setBackground(alternateColor);

哪个是在DefaultTableCellRenderer班级。而且似乎根本没有任何影响。有人有与 Nimbus 一起使用的自定义单元渲染器吗?

EDIT:如果有人感兴趣的话,结果发现这是一个问题Scala表格单元格渲染器,因为我实际上使用的是 Scala,而不是 Java。下面接受的答案在 Java 程序中运行得很好。单独提出问题here https://stackoverflow.com/questions/1326763/table-cell-renderer-using-nimbus-and-scala.


你的第一段代码如果没问题的话。我想你必须使用UIManager.getColor("Table.alternateRowColor")对于备用行和 table.getBackground() 否则。对于选定的行,请使用 table.getSelectionBackground()。所以你的代码可能看起来像

if (isSelected) {
    setBackground(table.getSelectionBackground());
}
else {
    if ( row % 2 == 0 ) {
       setBackground(UIManager.getColor("Table.alternateRowColor"));
    } else { 
       setBackground(table.getBackground());
    }
}

不要忘记确保您的面板是不透明的并且标签是透明的。

这是 Nimbus UI 默认值的一个很好的链接:http://www.duncanjauncey.com/java/ui/uimanager/UIDefaults_Java1.6.0_11_Windows_2000_5.0_Nimbus.html http://www.duncanjauncey.com/java/ui/uimanager/UIDefaults_Java1.6.0_11_Windows_2000_5.0_Nimbus.html

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

为 Nimbus 外观设计简单的单元渲染器 的相关文章

随机推荐

  • JavaScript 中的平等[重复]

    这个问题在这里已经有答案了 在 javascript 中工作时 有人可以为我提供关于相等 不相等和类型强制测试的良好参考或解释吗 从我读到的内容中 我看到使用 eqeq 与 eqeqeq 有两个思想原则 有些人认为您不应该使用 eqeq 而
  • 使用 ACPI 在 MS-DOS 中关闭计算机

    我在基于 Pentium 的计算机上运行 MS DOS 6 22 主板支持 ACPI 并且想知道是否有一个可以用来关闭计算机的汇编语言例程 或者它是否比那个更难 即主板 具体的 基本上 我想创建一个小程序来从命令行关闭计算机 这是专门为此编
  • 从 ProcessThreadCollection 中按名称获取正在运行的线程

    在搜索了 Stack Overflow 问题并进行了一些谷歌搜索后 我仍然没有得到它 我知道您可以使用 Thread isAlive 方法检查单个线程是否正在运行 但我想检查特定的 FooThread 是否仍在当前进程的所有正在运行的线程之
  • WPF - 是否必须处置 HwndSource?

    我在用着HwndSource在非主窗口的 WPF 窗口中 为了挂钩窗口过程 WndProc 来接收一些消息 WinSource HwndSource FromHwnd new WindowInteropHelper this Handle
  • blueimp jQuery-File-Upload - 如何提交不附加文件的表单?

    我找到了有关如何在提交文件上传表单时添加附加表单数据的解决方案 这个问题是如果没有要上传的文件 如何上传附加数据 我在任务管理应用程序中使用 blueimp jquery file upload 来拖放文件并将其附加到任务 该脚本已初始化并
  • Java泛型类型要么扩展要么是父类

    我正在寻找一些如下所示的代码 public class Parent
  • 我在 Android studio 中遇到错误

    在此输入图像描述 https i stack imgur com bvqID png我是安卓新手 我刚刚在 android studio 中创建了一个项目 并且在它的中遇到了问题manifest xml 错误是在 android icon
  • Android - 检测电容式触摸屏上的触摸压力?

    我听说过 MotionEvent e float press e getPressure 但这只会在没有触摸时返回 0 当我的手指触摸屏幕时返回 1 是否可以找到手指在触摸电容屏上施加的压力值 或者我的预感是否正确 即这只适用于电阻屏幕 M
  • 使用 vue-cli 服务时如何禁用 linting?

    我正在使用以下命令使用 vue cli 运行我的项目 vue cli service 服务 open 如何禁用所有 linting 目前每次保存时都会重新进行 linting 并且更改代码需要很长时间 我已经把 lintOnSave fal
  • ImageMagick 没有解码委托

    我正在尝试使用 imagemagick 转换图像 但收到此错误 转换 此图像格式 i imgur com nTheJ jpg 没有解码委托 error constitute c ReadImage 532 我正在这样做 convert ht
  • 对列表中的相邻元素进行分组

    假设我想编写一个函数来执行此操作 输入 1 1 3 3 4 2 2 5 6 6 输出 1 1 3 3 4 2 2 5 6 6 它将相同的相邻元素分组 这个方法的名称应该是什么 此操作有标准名称吗 In 1 1 3 3 4 2 2 5 6 6
  • Swift 3:将数据转换为字符串返回 nil 值

    将数据转换为字符串会返回 nil 值 Code thus unwraps the image if let image image print Saving image data don t unwrap here if let data
  • 当表有聚集索引时,数据是如何存储的

    我发现了无数的帖子 开头都是这样的很多时候我遇到人们说 聚集索引根据聚集索引键对表内的数据进行物理排序 这不是真的 然后这些帖子继续描述它是如何通过链表或其他方式实际存储的 例如 这个post http sqlwithmanoj wordp
  • Java 区域设置区分大小写

    我有以下代码来显示当前区域设置 System out println Locale getDefault System out println new Locale en US 上面给出的输出如下 en US en us 如何构造一个 Lo
  • 使用非负约束进行优化

    考虑以下功能 import numpy as np import scipy optimize as opt import math Periodic indexation def pl list i return list i len l
  • React + Redux 和 REST API?

    我在 Node 中构建了一个简单的 CRUD 应用程序 并已在 Express 中完成了其余 API 的创建 我现在正在寻求添加前端功能 并希望使用 React Redux 作为学习练习 然而 似乎所有围绕此的教程都直接使用 Redux 访
  • UnicodeDecodeError:“charmap”编解码器|安装 pip python-stdnum==1.8 时出错

    我对编程还很陌生 所以请耐心等待 当我为正在使用的模块安装一些必需的软件包时 我无法安装python stdnum 1 8 我收到以下错误消息 File C Users 59996 AppData Local Programs Python
  • 如何获取 Jenkins 的 API 令牌

    我正在尝试使用詹金斯REST https en wikipedia org wiki Representational state transferAPI 说明中说我需要 API 密钥 我浏览了所有配置页面才找到它 如何获取 Jenkins
  • 如何分发我的应用程序的多个版本?

    我想分发我的应用程序的两个版本 稳定分支以及当前的开发主干 使用试飞 http testflightapp com 而且 如果可能的话 我只想邀请测试人员一次 我可以在一个 TestFlight 团队中拥有一个应用程序的两个版本吗 或者也许
  • 为 Nimbus 外观设计简单的单元渲染器

    我有一个简单的单元格渲染器 它由一些组成JLabels 渲染器本身扩展JPanel 并且我正在尝试让它在 Nimbus 的外观和感觉中合理地渲染 基本上发生的事情是在lighter行 正如 Nimbus 所具有的交替行着色 我的特定单元格渲