public boolean editCellAt(int index, EventObject e){ 
        if(editor!=null && !editor.stopCellEditing()) 
            return false; 
 
        if(index<0 || index>=getModel().getSize()) 
            return false; 
 
        if(!isCellEditable(index)) 
            return false; 
 
        if (editorRemover == null){ 
            KeyboardFocusManager fm = KeyboardFocusManager.getCurrentKeyboardFocusManager(); 
            editorRemover = new CellEditorRemover(fm); 
            fm.addPropertyChangeListener("permanentFocusOwner", editorRemover);    //NOI18N 
        } 
 
        if (editor != null && editor.isCellEditable(e)) { 
            editorComp = prepareEditor(index); 
            if (editorComp == null) { 
                removeEditor(); 
                return false; 
            } 
            editorComp.setBounds(getCellBounds(index, index)); 
            add(editorComp); 
            editorComp.validate(); 
 
            editingIndex = index; 
            editor.addCellEditorListener(this); 
 
            return true; 
        } 
        return false; 
    }