0

我正在制作一个类似于房间管理器的程序,

每天每个房间都有不同的客户,有时一个客户可以在同一天占用几个房间。

我想用自己的颜色为每个客户着色。我可以在不为每个客户端创建唯一的单元格渲染器的情况下做到这一点吗?

我是 J-Tables 的新手,整个渲染系统在我看来效率不高。

这是我的应用程序的屏幕截图,

我为工作日和周末的列标题使用了不同的渲染器。此外,单元格是 J 按钮,渲染器为它们着色,但只有相同的颜色。

灰色单元格是“新”,橙色单元格被客户占用,不同的客户,相同的颜色:(

灰色细胞是

有任何想法吗 ?

谢谢,

戴夫

4

2 回答 2

3

请参见示例 #3(“渲染红色或绿色”): http ://www.javapractices.com/topic/TopicAction.do?Id=168

底线是,您的渲染器可以使用单个共享 JLabel,根据单元格设置不同的颜色(在上面的示例中,它们扩展了扩展 JLabel 的 DefaultTableCellRenderer,因此有效地为所有单元格使用相同的 JLabel。如果你不'不喜欢继承你可以只使用你自己的共享JLabel)。它之所以有效,是因为 JTable 渲染过程使用 JLabel 作为“可重复使用的标记”——连续遍历单元格,“记录”单元格的外观,然后继续。如果您的桌子是(比如说)5X3,它实际上并不能容纳 15 个标签,只有 15 个图像。

于 2014-12-08T08:56:21.160 回答
3
  • 创建一个单元格渲染器类
  • 使用单元格的状态来确定其颜色。
  • 如果列为 0,则将其设置为鲑鱼。
  • 否则,如果列非 0 并且值表明它已被占用,则将其设置为黄色
  • 否则为灰色。
  • 关键:这一切都取决于您在getTableCellRendererComponent(...)方法中的逻辑,以及您正确使用传递给此方法的参数。
于 2014-12-08T08:44:37.043 回答