将整数映射到深色

时间:2010-12-27 17:59:56

标签: java swing colors random jtable

我想知道如何将整数映射到颜色,但这样做会使序列对颜色没有太大影响(尽管它确实无关紧要)并且还要插入反复使用相同数字会产生相同的颜色。

它适用于JTable,并对表格的行着色以突出显示具有相同ID的类似行。存储任何元数据意味着许多混乱和低效率,我想避免。

基本上,f(x)->c for all x in the positive range of integers such that f(x)->c1, f(x+1)->c2, c1 !~ c2,其中x是id,c是结果颜色。我曾考虑使用Random,但这会根据生成数字的顺序而改变。如果没有添加顺序,那就没关系。

我忘了提到,颜色应该是暗的,以便白色文字能够正确显示。

干杯,
克里斯

3 个答案:

答案 0 :(得分:5)

使用hash function从整数计算RGB分量。如果您使用每个组件通常的1个字节,则生成3个字节的哈希值。任何合适的哈希值都将确保类似的输入将导致不相似的哈希值。

为确保颜色足够深,您可以在每个颜色分量中将其中一个位(例如第5个)固定为1。或者你可以使用HSB方案,修复黑暗等级。

答案 1 :(得分:2)

鉴于您希望自动化方法产生“暗色”颜色,我会看Color.getHSBColor(),并在保持饱和度和亮度相同的同时改变色调。您可能需要剪切代表黄色的色轮部分。

答案 2 :(得分:2)

还要考虑Color的{​​{3}}和brighter()方法。这个darker()使用前者FocusHandler