Acredito que a maneira de fazer isso é através do TableCellEditor. Por default, uma célula utiliza o JTextField como componente. Utilizando um Custom TableCellEditor, você pega esse JTextField e implementa um focusListener…Nunca testei isso, mas acho que esse é o caminho.
Como diria Cleber Machado…“Pode dar certo, ou não” :lol:
Fernando_Generoso_da
funciona…
Segue um trecho de código:
table=newJTable(dados,colunas);scroll.setViewportView(table);TableColumncolumn=table.getColumnModel().getColumn(0);JTextFieldfieldEditor=newJTextField();fieldEditor.addFocusListener(newFocusListener(){@OverridepublicvoidfocusGained(FocusEvente){((JTextField)e.getSource()).setText("");}@OverridepublicvoidfocusLost(FocusEvente){// TODO Auto-generated method stub}});CustomCellEditorcellEditor=newCustomCellEditor(fieldEditor);column.setCellEditor(cellEditor);
table=newJTable(dados,colunas);scroll.setViewportView(table);TableColumncolumn=table.getColumnModel().getColumn(0);JTextFieldfieldEditor=newJTextField();fieldEditor.addFocusListener(newFocusListener(){@OverridepublicvoidfocusGained(FocusEvente){((JTextField)e.getSource()).setText("");}@OverridepublicvoidfocusLost(FocusEvente){// TODO Auto-generated method stub}});CustomCellEditorcellEditor=newCustomCellEditor(fieldEditor);column.setCellEditor(cellEditor);
Para que um CustomCellEditor se ele não faz absolutamente nada além do que a superclasse já faz?
Fernando_Generoso_da
marcobiscaro2112:
Fernando Generoso da Rosa:
funciona....
Segue um trecho de código:
table=newJTable(dados,colunas);scroll.setViewportView(table);TableColumncolumn=table.getColumnModel().getColumn(0);JTextFieldfieldEditor=newJTextField();fieldEditor.addFocusListener(newFocusListener(){@OverridepublicvoidfocusGained(FocusEvente){((JTextField)e.getSource()).setText("");}@OverridepublicvoidfocusLost(FocusEvente){// TODO Auto-generated method stub}});CustomCellEditorcellEditor=newCustomCellEditor(fieldEditor);column.setCellEditor(cellEditor);
Para que um CustomCellEditor se ele não faz absolutamente nada além do que a superclasse já faz?
Como tu faria para adicionar o listener necessário no componente do cellEditor??
M
marcobiscaro2112
Por que ele precisa ser adicionado no CellEditor? Não poderia ser adicionado logo após a instanciação?
Ainda sim, nenhum listener é adicionado nesse CellEditor. Ele simplesmente chama o método da superclasse (por isso mesmo comentei: qual a utilidade de uma classe assim?).
Fernando_Generoso_da
Eu customizei o componente que é utilizado pelo CellEditor (JTextField) e adicionei NESSE componente o listener que trata adequadamente o que nosso colega necessita. Agora pode ter outras formas de fazer, e estaria muito interessado e curioso de ver como você faria, marcobiscaro2112.
M
marcobiscaro2112
Trocando as duas últimas linhas da primeira classe por:
Com isso a outra classe nem precisa existir, concorda?
Fernando_Generoso_da
concordo
B
blst
Pessoal, primeiramente queria agradecer, pois implementei da maneira descrita por vocês e deu certo.
Porém, tenho outra dúvida em relação a isso. Percebi que ele limpa a célula somente se eu clicar em cima dela com o mouse. Está certo pois ele limpa o campo no FocusGained (quando recebe o foco).
Como eu faço para limpar o campo se o usuário for para a célula pelas setas do teclado e já digitar o valor novo em cima da célula. Percebi que ele não substitui fazendo dessa maneira.
Tentei implementar um KeyListener, porém ele limpa o campo a cada dígito que eu insiro. O que estou fazendo de errado?