Los colores los tengo en una clase que se llama Grafico.colores[i],
donde i es la fila correspondiente.
Es para mostrar datos pertenecientes a un gráfico.
Y de ser posible y no mucho mas complicado, también que no se pueda
editar el contenido de las celdas. No siendo tan importante esto
último.
Desde ya muchas gracias!!!
/** Esta clase es para que no se puedan editar las filas */
public class MyCellEditor extends AbstractCellEditor implements
TableCellEditor, ActionListener {
public Object getCellEditorValue() {
return null;
}
public Component getTableCellEditorComponent(JTable table, Object
value, boolean isSelected, int row, int column) {
return null;
}
public void actionPerformed(ActionEvent e) {
}
}
/** Esta clase es para poner los colores de fondo */
public class MyCellRenderer extends JLabel implements TableCellRenderer
{
public MyCellRenderer() {
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table, Object
value, boolean isSelected, boolean hasFocus, int row, int column) {
this.setBackground( new Color(Grafico.colores[row].getRed(),
Grafico.colores[row].getGreen(), Grafico.colores[row].getBlue(),50) );
this.setText(value.toString());
this.setFont(new Font("Arial", Font.BOLD, 10));
return this;
}
}
/** Y luego para ponerlo en la JTable */
this.tblInforme.setDefaultRenderer(Object.class, new
MyCellRenderer());
this.tblInforme.setDefaultEditor(Object.class, new
MyCellEditor());
Lo del “prepareRenderer”, tambien es en el TableModel?, en este caso tiene algo que ver con la lógica de negocio, porque hace referencia a unos gráficos pero esa solución también me sirve, en mi casa estaba usando el DefaultTableModel, porque es una Tabla de 5x5, con datos estáticos, es para mostrar unos resultados, desde ya muchas gracias!
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
class generalRenderer extends JLabel implements TableCellRenderer { Font f = new Font( "Helvetica",Font.PLAIN,10 );
Color colGeneralSel = new Color(117, 204, 169);
Color colGeneral = new Color(225, 244, 238);
public generalRenderer() {
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable tabla, Object valor, boolean isSelected, boolean hasFocus,
int row, int column) {
setHorizontalAlignment(CENTER);
if (isSelected) {
setBackground(colGeneralSel);
} else {
setBackground(colGeneral);
}
try {
setFont(f);
setText(valor.toString());
} catch (NullPointerException npe) {
System.out.println(valor.toString());
setText("0");
}
return this;
}
}