rendered check java swing jtable jcheckbox

java - rendered - selectmanycheckbox layout primefaces



Mostrar JCheckBox en JTable (1)

Tengo un Jtable en el que quiero agregar un JCheckbox en una columna. Sin embargo, cuando creo un objeto JCheckbox, se muestra javax.swing.JCheckBox en la columna. Consulte la imagen. ¿Puedes decirme cómo enmendar eso, por favor? He buscado en todas partes pero no puedo encontrar ninguna solución para ello. Gracias.


  1. no agregue componentes a su TableModel , eso no es responsabilidad de TableModel
  2. Deberá especificar el tipo de clase de su columna. Suponiendo que está utilizando un DefaultTableModel , simplemente puede llenar la columna con un montón de booleanos y esto debería funcionar: después de la prueba, deberá anular el método getColumnClass del DefaultTableModel (o la implementación de TableModel ) y asegurarse de que la columna "casilla de verificación", devuelve Boolean.class

Vea Cómo usar tablas para más detalles

Por ejemplo...

import java.awt.EventQueue; import java.util.Random; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.table.DefaultTableModel; public class TestCardLayout { public static void main(String[] args) { new TestCardLayout(); } public TestCardLayout() { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { } Random rnd = new Random(); DefaultTableModel model = new DefaultTableModel(new Object[]{"Check boxes"}, 0) { @Override public Class<?> getColumnClass(int columnIndex) { return Boolean.class; } }; for (int index = 0; index < 10; index++) { model.addRow(new Object[]{rnd.nextBoolean()}); } JTable table = new JTable(model); final JFrame frame = new JFrame("Testing"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new JScrollPane(table)); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } }