[email protected]
New Member
note: this code is not mine, I have taken it from another site and i'm simply trying to modify it.I have a JTable with a load of details however, I want it so that when I change a particular cell for the first cell to change colour. Currently this code just highlights the row when I click on it, but I want it so that if I change one of the values to another number, the name cell for example to change red. I have tried a few things (if statements) but can't seem to work it. Any help would be great.\[code\]import javax.swing.*;import javax.swing.table.*;import java.awt.*;public class CustomCellRenderer{ JTable table; TableColumn tcol; public static void main(String[] args) { new CustomCellRenderer(); } public CustomCellRenderer(){ JFrame frame = new JFrame("Creating a Custom Cell Reanderer!"); JPanel panel = new JPanel(); String data[][] = {{"Vinod","Computer","3"}, {"Rahul","History","2"}, {"Manoj","Biology","4"}, {"Sanjay","PSD","5"}}; String col [] = {"Name","Course","Year"}; DefaultTableModel model = new DefaultTableModel(data,col); table = new JTable(model); tcol = table.getColumnModel().getColumn(0); tcol.setCellRenderer(new CustomTableCellRenderer()); tcol = table.getColumnModel().getColumn(1); tcol.setCellRenderer(new CustomTableCellRenderer()); tcol = table.getColumnModel().getColumn(2); tcol.setCellRenderer(new CustomTableCellRenderer()); JTableHeader header = table.getTableHeader(); header.setBackground(Color.yellow); JScrollPane pane = new JScrollPane(table); panel.add(pane); frame.add(panel); frame.setSize(500,150); frame.setUndecorated(true); frame.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } public class CustomTableCellRenderer extends DefaultTableCellRenderer{ public Component getTableCellRendererComponent (JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) { Component cell = super.getTableCellRendererComponent( table, obj, isSelected, hasFocus, row, column); if (isSelected) { cell.setBackground(Color.green); } else { if (row % 2 == 0) { cell.setBackground(Color.lightGray); } else { cell.setBackground(Color.lightGray); } } return cell; } } } \[/code\]