我已阅读并实现此 Changing JTable cell color
我想知道的是如何实际使用这段代码?我只想在单击时更改表格单元格的颜色。
最佳答案
在您引用的代码中,您有一个自定义 CellRenderer。
将其添加到表格后,您只需在适当的位置进行格式化:
class CustomRenderer extends DefaultTableCellRenderer
{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
// Formatting here
return c;
}
}
DefaultTableCellRenderer 就是将在 JTable 中用于绘制单元格的组件。更准确地说,在这种情况下,该组件是一个 JLabel(您可以通过检查来自 DefaultTableCellRenderer 的源代码来查看)。
因此,您应该对“c”对象(或“this”,因为该方法实际上每次都返回相同的组件:本身)进行所有格式设置。例如,c.setBackground()
将允许您设置背景颜色。
将为 JTable 的每个单元格调用被覆盖的 getTableCellRendererComponent()
方法,并使用参数告诉您有关上下文的信息。您知道表格、行、列、应该显示的值,并且您还知道单元格是否被选中,这对您的情况有帮助:
if (selected)
c.setBackground(Color.YELLOW);
更进一步,请注意,因为您覆盖了 DefaultTableCellRenderer 类,并使用了它自己的方法,所以您已经完成了一些格式设置,比如背景颜色,它来自表格。因此,您只需在需要时定义自己的颜色。否则,您将不得不关注所有情况,因为使用相同的组件,您将以颜色集结束一次,然后应用于所有连续的单元格,因为不会对它进行任何更改。
如果您想详细了解它的完成和使用方式,我建议您阅读 DefaultTableCellRenderer 的源代码(及其在 JTable 中的使用)。
关于java - 在 Java 中更改表格单元格颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2780573/