Consegui resolver o problema em manter a célula em modo de edição, porém o cursor não vai para a célula.
O código não tem nada a ver com o de cima, é um totalmente novo.
Alguém sabe como eu colocaria o cursos posicionado na célula?
public class EditoresGrid extends DefaultCellEditor{
private CampoTexto campoTexto;
private JTable grid;
public EditoresGrid(CampoTexto t,JTable grid){
super(t);
campoTexto = t;
this.grid=grid;
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
campoTexto.setTexto(value.toString());
if (isSelected)
campoTexto.selectAll();
return campoTexto;
}
public Object getCellEditorValue() {
if(!campoTexto.isEmpty()){
try {
return campoTexto.getTexto();
}
catch(Exception e) {
}
}
else{
}
return "";
}
public boolean stopCellEditing() {
if(campoTexto.isEmpty()) {
fireEditingCanceled();
JOptionPane.showMessageDialog(null,"A célula não pode ficar em branco.");
campoTexto.requestFocus();
/*Mantém em modo de edição a célula que está pendente de entrada de texto*/
boolean success = grid.editCellAt(grid.getSelectedRow(), grid.getSelectedColumn());
if (success) {
boolean toggle = false;
boolean extend = false;
grid.changeSelection(grid.getSelectedRow(), grid.getSelectedColumn(), toggle, extend);
} else {
// célula nao é editada
}
return false;
}
return super.stopCellEditing();
}
}