viernes, 16 de octubre de 2009

CAMBIAR COLOR DE UNA CELDA Y UNA FILA EN UN JTABLE

primero tenemos que crear una clase que derive de DefaultTableCellRenderer la cual es la encargada de dar formato a nuestro jtable...

la clase para selleccionar toda una fila es:
import java.awt.Color;
import java.awt.Component;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class MiRender extends DefaultTableCellRenderer
{
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row,int column)
{

super.getTableCellRendererComponent (table, value, isSelected, hasFocus, row, column);

if(isSelected)
{
this.setOpaque(true);
this.setBackground(Color.RED);
this.setForeground(Color.BLUE);
}
else
{
this.setOpaque(true);
this.setBackground(Color.WHITE);
this.setForeground(Color.BLACK);

}
// JOptionPane.showMessageDialog(null,"position");


return this;
}
}

Nota:"esta clase selecciona toda la fila si queremos solo un celda es necesario agregar al if un && hasfocus"

ya teniendo la clase definimos el setDefaultRenderer de las tablas en mi caso tengo dos y un metodo que las llena, esto lo puse en el contrutor de mi formulario...

public NewJFrame() {
initComponents();

model= new DefaultTableModel();
model.setColumnIdentifiers(new Object[] {"COLUM1","COLUM2","COLUM3","COLUM4","COLUM5" });
this.FilllTable();
// SELECCIONAR UNA CELDA TABLA UNO
jTable1.setDefaultRenderer (Object.class, new RenderTabla());
jTable1.setSelectionMode( ListSelectionModel.SINGLE_SELECTION);
//SELECCIONA UNA FILA TABLA 2
jTable2.setDefaultRenderer (Object.class, new MiRender());
jTable2.setSelectionMode( ListSelectionModel.SINGLE_SELECTION);



}


DESCARGAR EL CODIGO