突出显示 JTable 中带有图标的单元格

PBD*_*017 2 java icons swing jtable jlabel

我有一个 JTable,其中有 3 列。1. 图标,2. 文件或文件夹名称,3. 文件类型或“文件夹”。我在方法中使用 JLabel (我设置背景 + png 图像)绘制图标getTableCellRendererComponent。最初,我绘制 JLable 的交替背景“白色”或“灰色”,因为这些是JTableSwing 组件交替绘制表格的颜色。现在,当我选择一行时,图标(第一列)背景不会重新绘制为与该行的其余部分相同的“深蓝色”。说明性截图

这是我的问题:

一般 1)如何在突出显示一行时突出显示图标单元格(指针就足够了,不需要代码)?

具体的

1.1)我必须使用JLabel吗?为什么我不能只是例如.SetValueAt("image.png",0,0)

1.2)我尝试了,getColumnClass(...)但这似乎重新绘制了给定列中的所有单元格。这是预期的吗?

谢谢。

Til*_*ilo 5

1.)调用时会javax.swing.table.TableCellRenderer获取一个参数。您可以通过继承(例如)和覆盖来isSelected轻松编写自己的:调整对象并返回。拥有自己的渲染器还可以让您设置断点并真正了解正在发生的情况。TableCellRendererJLabelgetTableCellRendererComponentthis

1.1 + 1.2.) 和setValueAt都是getColumnClass模型的一部分,并且可能无法解决所选背景的问题。

您不必使用JLabel: 如果您查看返回类型,getTableCellRendererComponent您会发现它是Component(甚至不是JComponent)。我想JLabel这只是习惯,因为它通常具有您想要的渲染器的所有功能,并且DefaultTableCellRenderer还使用JLabel. 为了获得最大的自由,我建议您使用JComponent并编写自己的paintComponent,但在这种情况下您可能不必这样做。