Swing - Setting the color of a cell based on the value of a cell

梦想的初衷 提交于 2019-12-01 09:06:47

Override prepareRenderer method for doing that.

Example:

public Component prepareRenderer (TableCellRenderer renderer, int rowIndex, int columnIndex){  
Component componenet = super.prepareRenderer(renderer, rowIndex, columnIndex);  

if(getValueAt(rowIndex, columnIndex).toString().equals("Red")) {  
   componenet.setBackground(Color.RED);  
} else if(getValueAt(rowIndex, columnIndex).toString().equals("Green")) {
   componenet.setBackground(Color.GREEN);
}
return componenet;
} 

UPDATE:

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;


public class PrepareRendereEx {

public static void main(String[] args) {

    JFrame frame = new JFrame();
    frame.setSize(new Dimension(400, 100));

    Object data[][] = { {"java", "j2ee"}, 
                        {"java", "j2ee"}, 
                        {"java", "j2ee"}
                      };
    Object[] columnNames = {"Java", "J2EE"};

    DefaultTableModel model = new DefaultTableModel(data, columnNames);
    JTable table = new JTable(model) {
        @Override
        public Component prepareRenderer(TableCellRenderer renderer, int rowIndex,
                int columnIndex) {
            JComponent component = (JComponent) super.prepareRenderer(renderer, rowIndex, columnIndex);  

            if(getValueAt(rowIndex, 0).toString().equalsIgnoreCase("java") && columnIndex == 0) {
                component.setBackground(Color.RED);
            } else if(getValueAt(rowIndex, 1).toString().equalsIgnoreCase("j2ee") && columnIndex == 1){
                component.setBackground(Color.GREEN);
            }

            return component;
        }
    };

    frame.add(new JScrollPane(table));
    frame.setVisible(true);
}
}

OUTPUT:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!