package com.link_intersystems.swing; import java.awt.Color; import java.awt.Component; import javax.swing.Icon; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JList; import javax.swing.JTable; import javax.swing.ListCellRenderer; import javax.swing.table.TableCellRenderer; public class CheckboxRenderer extends JCheckBox implements ListCellRenderer, TableCellRenderer { /** * */ private static final long serialVersionUID = 7492071899615624010L; public CheckboxRenderer() { setOpaque(true); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { applyComponentRenderComponent(list); applyAbstractButtonRenderComponent(value, isSelected); return this; } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { applyComponentRenderComponent(table); applyAbstractButtonRenderComponent(value, isSelected); return null; } private void applyAbstractButtonRenderComponent(Object value, boolean isSelected) { setSelected(isSelected); if (value instanceof Icon) { setIcon((Icon) value); setText(""); } else { setIcon(null); setText((value == null) ? "" : value.toString()); } } private void applyComponentRenderComponent(JComponent component) { setComponentOrientation(component.getComponentOrientation()); setEnabled(component.isEnabled()); setFont(component.getFont()); Color bg = component.getBackground(); Color fg = component.getForeground(); setBackground(bg); setForeground(fg); } }