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
codice:
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;
}
}
Mentre questo è il pezzettino di codice che ho inserito nel metodo ActionPerformed che attiva tutto alla pressione dell'apposito tasto
codice:
if ( actionCommand.equals("SUCC")){
String stringaSelezionata = cerca.getText();
table.setDefaultRenderer(Object.class, new ColorRenderer(stringaSelezionata, elements));
model.fireTableDataChanged();
}