怎么在JTable表格中把列做成单选框
1、重写一个单元格渲染类
public class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {
private static final long serialVersionUID = 1L;
Border border = new EmptyBorder(1, 2, 1, 2);
public CheckBoxRenderer() {
super();
setOpaque(true);
setHorizontalAlignment(SwingConstants.CENTER);
setBackground(Color.WHITE);
}
public CheckBoxRenderer(String text, boolean selected) {
super(text, selected);
setOpaque(true);
setHorizontalAlignment(SwingConstants.CENTER);
setBackground(Color.WHITE);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
if (value instanceof Boolean) {
setSelected(((Boolean) value).booleanValue());
}
return this;
}
}
2、重写单元格编辑类
class CheckBoxCellEditor extends AbstractCellEditor implements TableCellEditor {
private static final long serialVersionUID = 1L;
protected JCheckBox checkBox;
public CheckBoxCellEditor() {
checkBox = new JCheckBox();
checkBox.setHorizontalAlignment(SwingConstants.CENTER);
checkBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
}
});
}
@Override
public Object getCellEditorValue() {
return Boolean.valueOf(checkBox.isSelected());
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row,
int column) {
if (value != null) {
checkBox.setSelected(((Boolean) value).booleanValue());
}
return checkBox;
}
}
3、给列添加渲染类和编辑类
CheckBoxRenderer checkBoxRenderer = new CheckBoxRenderer(); CheckBoxCellEditor checkBoxCellEditor = new CheckBoxCellEditor(); table.getColumnModel().getColumn(5).setCellRenderer(checkBoxRenderer); table.getColumnModel().getColumn(5).setCellEditor(checkBoxCellEditor);

浙公网安备 33010602011771号