Salve a tutti, ho un problema che non riesco a risolvere:
in pratica dovrei inserire del testo in una JTextField e colorare la riga sulla JTable che contiene il testo immesso.. il problema è che mi colora l'intera tabella e non capisco perchè xd
vi posto il codice che ho scritto, spero possiate darmi una mano!
Questa è il Renderer personalizzato
Mentre questo è il pezzettino di codice che ho inserito nel metodo ActionPerformed che attiva tutto alla pressione dell'apposito tastocodice:import java.awt.Color; import java.awt.Component; import java.util.ArrayList; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; /** * * @author Gianluca */ public class ColorRenderer extends DefaultTableCellRenderer{ private Color currentColor = Color.white; private String stringaSelezionata; private ArrayList <FileMultimediale> elements; public ColorRenderer(String stringaSelezionata, ArrayList<FileMultimediale> elements) { super(); this.stringaSelezionata = stringaSelezionata; this.elements = elements; } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean selected, boolean focused, int row, int col) { for ( int i = 0; i < elements.size(); i++ ){ if (elements.get(i).getTitolo().contains(stringaSelezionata) || elements.get(i).getAutore().contains(stringaSelezionata)){ currentColor = Color.CYAN; } else{ currentColor = Color.WHITE; } } if (selected) { super.setForeground(table.getSelectionForeground()); super.setBackground(table.getSelectionBackground()); } else { super.setForeground(Color.black); super.setBackground(currentColor); } setFont(table.getFont()); setValue(value); return this; } }
codice:if ( actionCommand.equals("SUCC")){ String stringaSelezionata = cerca.getText(); table.setDefaultRenderer(Object.class, new ColorRenderer(stringaSelezionata, elements)); model.fireTableDataChanged(); }

Rispondi quotando

