Non è necessario, oltre che dispendioso, creare un nuovo renderer ogni volta... Una soluzione semplice è quella di utilizzare un vettore "parallelo" di booleani in cui riporti quale riga colorare... Forse uno snippet è più comprensibile di tante parole:
A questo punto ti gestisci il vettore di booleani, alzando e/o abbassando l'elemento (riga i-sima) che vuoi colorare.codice:Object rowData[] = new Object[nrRow]; boolean redColoring[] = new boolean[nrRow]; String columnNames[] = new String[nrCol]; JTable table = new JTable(rowData, columnNames); table.setDefaultRenderer(Object.class, new TableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){ JLabel label = new JLabel(value.toString()); label.setOpaque(true); if (redColoring[row]) { label.setBackground(Color.RED); } return label; } });

Rispondi quotando