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

标签 java swing icons jtable jlabel

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

这是我的问题:

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

具体

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

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

谢谢。

最佳答案

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

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

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

关于java - 突出显示 JTable 中带有图标的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12233823/

相关文章:

wpf - 模糊的 XAML 矢量图形

java - 尝试在多个 JPanel 中显示图像

从不同的类调用时 Java repaint() 不起作用

css - 管理 LTE 图标不能离线工作?

java - 我的所有 JUnit 都出现空指针异常。调试中 - 未找到源

java - 一个 JFrame 和两个 JPanel

html - 附件的 CSS 样式 - 自动在文本前显示图标

java - 错误: Could not find or load main class pj2 on bash

java - 替换java中arraylists的arraylist中的x,y

java - Cassandra NoHostAvailableException 仍然存在节点