Pessoal,
Eu adicionei um tableCellEditor em uma coluna da minha tabela aconteceram os seguintes problemas nesta coluna:
1.Com apenas um clique a célula entra no modo de edição. Gostaria que fossem dois, como nas outras colunas. Para resolver isso eu devo adicionar um mouseListener, certo? Onde eu devo adiciona-lo?
2.Quando a edição é iniciada com o mouse, eu preciso apertar o ENTER duas vezes para finalizar a edição! Porque isso ocorre? Como resolvo isso?
3.Quando eu termino a edição, o focus vai para a próxima célula da coluna e eu queria que permanecesse na mesma. Como eu "seto" o focus em uma célula da tabela?
Segue o meu código:
//Adicionar o tableCellEditor na coluna
TableColumn colunaTeste=janela.getJtProduto().getColumnModel().getColumn(8);
colunaTeste.setCellEditor(new EditorTeste(this));
public class EditorTeste extends AbstractCellEditor implements TableCellEditor{
PedidoFornecedorControlador controlador;
JFormattedTextField component= new JFormattedTextField(new Float(0.0f));
JTable tabela=null;
public EditorTeste(PedidoFornecedorControlador controlador){
this.controlador=controlador;
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value,boolean isSelected, int row, int column) {
int resp=JOptionPane.showConfirmDialog(null, "Certeza?");
if(resp==JOptionPane.CANCEL_OPTION){
return null;
}
controlador.removeListenerProduto();
component.setValue(value);
component.selectAll();
tabela=table;
return component;
}
@Override
public Object getCellEditorValue() {
controlador.insereListenerProduto();
try{
float valor=Float.valueOf(component.getText().replace(',', '.'));
component.setValue(valor);
}catch(NumberFormatException e){
//this.tabela.editCellAt(this., arg1)
}
System.out.println("ai sim: "+component.getValue());
controlador.insereListenerProduto();
tabela.grabFocus();
return component.getValue();
}
}