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.
- no agregue componentes a su
TableModel
, eso no es responsabilidad deTableModel
- 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étodogetColumnClass
delDefaultTableModel
(o la implementación deTableModel
) y asegurarse de que la columna "casilla de verificación", devuelveBoolean.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);
}
});
}
}