java - JTable 的 Customrenderer 被多次调用

标签 java swing jtable

我想根据 JTable 中的值对某些行进行着色。但是我的 customrenderer 被无限次调用,并且整个表格而不是某些行都被着色。

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row, int column) 
{
    Component c = render.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

    DefaultTableModel model = (DefaultTableModel)table.getModel();
    String flag = (String)model.getValueAt(row, 0);

    if(flag.equalsIgnoreCase("java"))
    {

        c.setBackground(new Color(0xE8F2FE)); //light blue
    }

    return c;
}

最佳答案

所有单元格使用相同的渲染器。一旦更改渲染器的背景,该背景将用于所有单元格。

所以你需要一个“else条件”来将背景设置为默认颜色。像这样的东西:

else
   c.setBackground( table.getBackground() );

您还可以查看Table Row Rendering用于突出显示行背景的替代方法,该方法可以更简单,特别是当每列中发现不同类型的数据时。

关于java - JTable 的 Customrenderer 被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34084634/

相关文章:

java - Spring Security 拦截 url 似乎被跳过/忽略

java - jTable 内的 jFormattedText

java - 自动调整网格布局中 jbutton 图标的大小

java - 如何将图像添加到 JTable 单元格?

java - 从数组中获取每个元素并将其放入不同的 JTable 行中

java冒泡排序问题

java - 如何实现 Java 通用数据结构,避免类型删除转换问题

java - JNLP/Java Web Start 可以启动命令行应用程序吗

java - 设置不同的外观和感觉在从主类打开的 java 类上不起作用

java - JXTable荧光笔