color seleccion Jtable
el color de fondo al dar click el la fila se coloca de un color solo en las celdas que son de tipo texto por que las columnas que son de tipo boolean y contiene check box no sucede lo mismo y se ve discornidana la tabla
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.table.TableCellRenderer;
public class TableApuestaRenderer extends JCheckBox implements TableCellRenderer {
Font normal = new Font( "Arial",Font.PLAIN,12 );
Font negrilla = new Font( "Helvetica",Font.BOLD,12);
Font cursiva = new Font( "Times new roman",Font.ITALIC,12 );
private JComponent component = new JCheckBox();
private static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
//private JComponent component = new JCheckBox();
public TableApuestaRenderer() {
setOpaque(true);
// super();
//setHorizontalAlignment(JLabel.CENTER);
//setIcon(new ColorableMetalCheckBoxIcon());
//setBorderPainted(true);
}
@Override
public Component getTableCellRendererComponent (JTable table, Object value, boolean isSelected,boolean hasFocus, int row, int column)
{
//Color de fondo de la celda
JLabel etiqueta = new JLabel();
etiqueta.setOpaque(true);
if (row % 2 == 0) {
etiqueta.setBackground(new Color(255, 255, 200));
} else {
etiqueta.setBackground(Color.white);
}
if (column == 0) {
String nombre = (String) value;
etiqueta.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
etiqueta.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/on.png")));
}
if (column ==2) {
String nombre = (String) value;
etiqueta.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
etiqueta.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/off.png")));
}
if (column == 1) {
String nombre = (String) value;
etiqueta.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
if (nombre.startsWith("V")) { //Hombre
etiqueta.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/hombre.png")));
} else if (nombre.startsWith("&")) { //Mujer
etiqueta.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/mujer.png")));
}
etiqueta.setText(value.toString().substring(1, nombre.length()));
}
else {
etiqueta.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
etiqueta.setText(value.toString());
}
//color de fondo de la celada cuando es seleccionada
if (isSelected) {
etiqueta.setBackground(new Color(0,153,204));
}
//else
//{
// etiqueta.setBackground(new Color(255, 255, 200));
//}
if (hasFocus) {
setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
} else {
setBorder(noFocusBorder);
}
return etiqueta;
}
}
esto es el codigo que uso y no logro que los chechbox al seleccionarlos tomern el mismo color de fondo que las demas celdas de tipo texto :(
- hackchan's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios recientes
hace 2 semanas 4 días
hace 2 semanas 4 días
hace 2 semanas 4 días
hace 27 semanas 5 horas
hace 28 semanas 2 días
hace 34 semanas 6 días
hace 1 año 27 semanas
hace 2 años 39 semanas
hace 2 años 43 semanas
hace 2 años 50 semanas