I follow the code I found (Yes, I understand how this works) This is from here: Link to code
What I'm trying to do is set the cells Foreground color if the cell value is set to "yellow"
Here is my code:
public class Board extends JPanel{ private static final long serialVersionUID = 1L; int boardHeight = 20; int boardWidth = 10; JTable table; public Board() { table = new JTable(this.boardHeight, this.boardWidth); table.setDefaultRenderer(String.class, new BoardTableCellRenderer()); table.setFocusable(false); table.setShowGrid(false); table.setRowMargin(0); table.setIntercellSpacing(new Dimension(0,0)); table.setRowSelectionAllowed(false); table.setVisible(true); this.add(table); this.setPreferredSize(new Dimension(table.getPreferredSize().width, (table.getPreferredSize().height + 85))); } public void paint(Graphics g) { table.setRowHeight(20); for (int x = 0; x < this.table.getColumnCount(); ++x) { TableColumn col = this.table.getColumnModel().getColumn(x); col.setPreferredWidth(20); } } }
And cell renderer
public class BoardTableCellRenderer extends DefaultTableCellRenderer { private static final long serialVersionUID = 1L; public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row,int col) { Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col); String s = table.getModel().getValueAt(row, col).toString(); if (s.equalsIgnoreCase("yellow")) { c.setForeground(Color.YELLOW); } else { c.setForeground(Color.WHITE); } return c; } }
The problem is that it does not change if I set the cell value to yellow
Thanks in advance!
java swing jtable tablecellrenderer
Diesal11
source share