java - 在 Java 中更改表格单元格颜色

标签 java swing jtable

我已阅读并实现此 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/

相关文章:

java - 具有 AbstractTableModel 的 JTable 不会在单击时进行编辑

java - 运行rmi程序时如何解决java.security.AccessControlException问题?

java - 当接口(interface) A 在其方法签名中定义接口(interface) B 时

jvm - 原始包装器实例化是否会导致 JDK 1.6 中的内存分配

java - 为什么我创建的点没有移动?

java - JTable 中的单选按钮无法正常工作

java - 尝试创建字符串

java - JPanel的自动重绘

java - 如何将 JComboBox 事件处理程序的字符串放入变量中进行查询?

java - 如何使用 AbstractTableModel 在 JTable 上添加行?