I am trying to create custom cell renderer for jTable. And I would admit, even with so much reading I havent really been able to understand how to add custom components as cell renderer. I want to add JCheckBox
renderer.
So far I have tried this code:
import java.awt.Component;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
public class test extends JFrame {
public static DefaultTableModel model = new DefaultTableModel();
public static void main (String args[]){
JTable table = new JTable();
table.setDefaultRenderer(String.class, new CheckboxTableCellRenderer());
table.setModel(model);
model.addRow(new Object[] {"testData2","testData1"});
JFrame frame = new JFrame();
frame.add(list);
frame.pack();
frame.setVisible(true);
}
public static class CheckboxTableCellRenderer<E> extends JCheckBox implements
TableCellRenderer {
@Override
public Component getTableCellRendererComponent( JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column ){
setComponentOrientation(table.getComponentOrientation());
setFont(table.getFont());
setText(String.valueOf(value));
setBackground(table.getBackground());
setForeground(table.getForeground());
setSelected(isSelected);
setEnabled(table.isEnabled());
return this;
}
}
}
But no matter what row I try to add to model, it doesnt show any data in table.
Can anyone show me a correct way to do this?