Muchas veces deseamos incluir componentes de selección en JTables, quizá parezca una labor muy difícil pero en realidad no es así veamos Como poner JCheckBox en JTable Java NetBeans, mediante un modelo:
Como poner JCheckBox en JTable Java NetBeans
Código
public static DefaultTableModel nombrequequieras; private void CrearModTablaPerm(){ try { nombrequequieras = (new DefaultTableModel( null, new String [] { "Campo1", "Campo2", //checkbox "Campo3", "Campo4", "Campo5", //Nombre de los campos "Campo6", "Campo7", "Campo8"}){ Class[] types = new Class [] { java.lang.String.class, java.lang.Boolean.class, //este es para el check java.lang.String.class, java.lang.String.class, //Tipos java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class}; boolean[] canEdit = new boolean [] { false, true, false, false, false, false, false, false }; @Override public Class getColumnClass(int columnIndex) { return types [columnIndex]; } @Override public boolean isCellEditable(int rowIndex, int colIndex){ return canEdit [colIndex]; } }); tabla.setModel(nombrequequieras); //estos son tamaños de las columnas no es requerido tabla.getColumnModel().getColumn(0).setPreferredWidth(50); tabla.getColumnModel().getColumn(0).setMaxWidth(50); } catch (Exception e) { JOptionPane.showMessageDialog(null,e.toString()+"error"); } }
Este tipo de acciones son muy importantes cuando necesitamos trabajar sobre los datos cargados en un JTable.
HOLA DAVID, quisiera hacerte una pregunta, y si esta a tu alcance me ayudes. soy nuevo en Java.
tengo un tabla en mysql de usuarios y unos de sus campos es booleanos,definito como BIT(), en total son 5 campos, cuando lo graba en mysql el jcheckbox es true y queda como 1 la tabla, quiero mostrar los datos en una jtable, pero ese campo me lo muestra con «1», la pregunta es la siguiente .¿ como hago que en la jtable no me muestre el numero 1 si no como un campo jcheckbox y se vea con un chulo ? agradezco cualquier ayuda posible.
Hola Yesid, pues es bastante sencillo, solo necesitas en el modelo establecer tu check así:
DefaultTableModel model;
private void Modelo() {
try {
model = (new DefaultTableModel(
null, new String[]{"check"}) {
Class[] types = new Class[]{
java.lang.Boolean.class};
boolean[] canEdit = new boolean[]{
true
};
@Override
public Class getColumnClass(int columnIndex) {
return types[columnIndex];
}
@Override
public boolean isCellEditable(int rowIndex, int colIndex) {
return canEdit[colIndex];
}
});
tabla.setModel(model);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.toString() + "error2");
}
}
Luego nada mas llenas la tabla, aquí te pongo un ejemplo con un array, tu lo harás con los datos de tu bd, así:
private void ejemplo() {
ArrayList lista= new ArrayList<>();
lista.add(true);
lista.add(true);
lista.add(false);
lista.add(true);
lista.add(true);
lista.add(false);
lista.add(false);
Object O[] = null;
for (int i = 0; i < lista.size(); i++) { model.addRow(O); model.setValueAt(lista.get(i), i, 0); } }
Si en tu tabla tienes valores 1 y 0 solo falta que al momento de llenar tu tabla lo verifiques con un if o bien hacerte un pequeño método como:
private boolean getBoolean(String valor){
boolean b=false;
if(valor.equals("1")){
b= true;
}else{
b = false;
}
return b;
}
y usarlo al momento de llenar tu jTable, espero haberte ayudado.
Un saludo!.