Hello there,
I am new to Java programming,
I am trying to create a check box in a table cell which the user should able manipulate when the JTable is showing, the renderer is working fine but the editor is not , the overriden method getTableCellEditorComponent never gets a call, getTableCellRendererComponent does get a call and renderer works fine.
any ideas whats wrong here ?? or what could be wrong which makes getTableCellEditorComponent not get called ?

my renderere and editor code is like this

package com.itrsgroup.swing.componentmanager.dockablemanager;

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.EventObject;

import javax.swing.AbstractCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;

/**
* A cell renderer and a cell editor for rendering and editing the filters active state.
*
*/
public class ActiveCheckBoxRendererEditor extends AbstractCellEditor
implements TableCellEditor, TableCellRenderer, ItemListener
{
private Font font = new Font("Verdana", Font.BOLD, 11 );
private JCheckBox editor = new JCheckBox("Inactive");
private JCheckBox renderer = new JCheckBox("Inactive");

private String strSelectedText;
private String strNotSelectedText;

private Color colourActive = new Color(51,153,51);
private Color colourInActive = Color.RED;

/** Constructor. */
public ActiveCheckBoxRendererEditor()
{
this( "Selected", "Not Selected" );
}

/**
* Constructor.
* @param strSelText - the text to render when selected.
* @param strNotSelText - the text to render when not selected.
*/
public ActiveCheckBoxRendererEditor(String strSelText, String strNotSelText)
{

strSelectedText = strSelText;
strNotSelectedText = strNotSelText;

renderer = new JCheckBox( strNotSelectedText );
renderer.setHorizontalTextPosition( SwingConstants.CENTER );
renderer.setVerticalTextPosition( SwingConstants.TOP);
renderer.setHorizontalAlignment( SwingConstants.CENTER );
renderer.setVerticalAlignment( SwingConstants.CENTER );
renderer.setFont( font );

editor = new JCheckBox( strNotSelectedText );
editor.setBackground( UIManager.getColor("Table.selectionBackground") );
editor.setHorizontalTextPosition( SwingConstants.CENTER );
editor.setVerticalTextPosition( SwingConstants.TOP );
editor.setHorizontalAlignment( SwingConstants.CENTER );
editor.setVerticalAlignment( SwingConstants.CENTER );
editor.setFont( font );
editor.addItemListener( this );
}

@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
{
return editor;
}

@Override
public boolean isCellEditable(EventObject arg0)
{
// TODO Auto-generated method stub
return true;
}

@Override
public Object getCellEditorValue()
{
return editor.isSelected();
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
Boolean bool = (Boolean) value;

renderer.setSelected( bool );
renderer.setText( bool ? strSelectedText : strNotSelectedText);
renderer.setForeground( bool ? colourActive : colourInActive );

if( isSelected )
renderer.setBackground( table.getSelectionBackground() );
else
renderer.setBackground( table.getBackground() );

return renderer;
}

@Override
public void itemStateChanged(ItemEvent e)
{
boolean isSelected = e.getStateChange() == ItemEvent.SELECTED;

editor.setText( isSelected ? strSelectedText : strNotSelectedText);
stopCellEditing();
}
}


and this is how I install it on my JTable

ActiveCheckBoxRendererEditor cbc = new ActiveCheckBoxRendererEditor("Active", "Inactive");


TableColumn
activeColumn = this.getColumnModel().getColumn( 3 );
activeColumn.setCellEditor( cbc);
activeColumn.setCellRenderer( cbc );
activeColumn.setPreferredWidth( 80 );
activeColumn.setMaxWidth( 200 );
activeColumn.setMinWidth( 80 );


thanks
Ahmed