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 3 días 29 mins
hace 3 días 30 mins
hace 2 días 10 horas
hace 45 semanas 1 día
hace 2 años 4 semanas
hace 2 años 8 semanas
hace 2 años 16 semanas
hace 2 años 24 semanas
hace 2 años 27 semanas
hace 2 años 28 semanas