Sto cercando una soluzione per questo problema: Ho un file excel, che contiene dati. Alcune celle hanno uno sfondo giallo. Ho già creato un codice per importare il testo in JTable, che funziona bene. Ma voglio anche importare il colore della cella di sfondo in celle specifiche. Per semplicità di questo esempio, non ho usato i loop, leggendo i dati excel dalla sorgente ecc. Dopo aver letto il forum ho capito che ho bisogno di CustomCellRenderer.Colore solo celle specifiche in JTable
Ho un problema con questo approccio, perché questo codice colora correttamente le celle nella colonna, ma quando inizio a scorrere le celle colorate in questa tabella, ricolora l'intera colonna in giallo. (guarda lo screenshot)
Ho pensato di aggiungere un'altra istruzione per colorare in modo specifico le celle rimanenti in bianco, ma questo approccio non funzionerà per me, perché sovrascriverei i miei precedenti risultati di cella.
Potete indicarmi una soluzione su questo? (si tratta di un bug o comportamento atteso di JTable?). Sto utilizzando NetBeans e il generatore di n drop GUI di trascinamento
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class MyRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
int[][] coordinatesYellow = new int[3][2];
//[row][column] these cells are yellow
coordinatesYellow[0][0] = 3;
coordinatesYellow[0][1] = 2;
coordinatesYellow[1][0] = 4;
coordinatesYellow[1][1] = 2;
coordinatesYellow[2][0] = 2;
coordinatesYellow[2][1] = 2;
for (int i = 0; i < 3; i++) {
if ((row == coordinatesYellow[i][0]) && (column == coordinatesYellow[i][1])) {
c.setBackground(Color.yellow);
}
}
return c;
}
}
// And this is the statement I use for calling the renderer:
// resultsTable.getColumnModel().getColumn(0).setCellRenderer(new MyRenderer());
@TT - il commento è essenzialmente una risposta completa. – tucuxi
@tucuxi Vero, sembrava così banale che ho postato come commento. Ho fatto una risposta. –
Vedere anche http://stackoverflow.com/questions/22606227/colored-table-cells (potrebbe anche essere un duplicato ...) – Marco13