package jp.gr.java_conf.skrb.game.trivia.mclient; import java.awt.Component; import javax.swing.AbstractCellEditor; import javax.swing.JComponent; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableCellEditor; import javax.swing.table.TableModel; public class OperationTable extends JTable { private ComponentRenderer componentRenderer; private ComponentEditor componentEditor; public OperationTable(TableModel model) { super(model); componentRenderer = new ComponentRenderer(); componentEditor = new ComponentEditor(); } public TableCellRenderer getCellRenderer(int row, int col) { Object obj = getValueAt(row, col); if (obj instanceof JComponent) { return componentRenderer; } else { return super.getCellRenderer(row, col); } } public TableCellEditor getCellEditor(int row, int col) { Object obj = getValueAt(row, col); if (obj instanceof JComponent) { return componentEditor; } else { return super.getCellEditor(row, col); } } class ComponentRenderer implements TableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) { return (Component)value; } } class ComponentEditor extends AbstractCellEditor implements TableCellEditor { private Component comp; public Object getCellEditorValue() { return comp; } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int col) { comp = (Component)value; return comp; } } }