Após eu aplicar um cell editor na minha jtable, para aceitar somente números inteiros em algumas colunas, as células entram no modo de edição(aparece o cursos dentro) com apenas um clique do mouse.
Eu gostaria de saber como eu poderia arrumar isso para voltar do jeito default, onde para editar uma célula o usuário tem que clicar duas vezes para aparecer o cursor dentro da mesma.
Thobarux, a mudança no células não deveria ter influência direta no mouse.Como está seu MouseListener na sua JTable?Algo do tipo:
suaJTable.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
if (e.getClickCount() == 2)
{ // ...faz oquevc quer
}
}
}
Certo?Posta o código que vc tá usando com seu TableCellEditor(se não me engano o LAF por default de TableCellEditor só reage a um clique, não dois para edição).
T
Thobarux
olá Ironlynx !
não estou usando mouseListener na tabela, no início do código eu “seto” a tabela assim:
// ************ faz a tecla ENTER se comportar como a tecla TABtabelaPecas.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0,false),"selectNextColumnCell");// permite parar e tirar a seleção de uma célula quando clicar em// qualquer outro componente da janelatabelaPecas.putClientProperty("terminateEditOnFocusLost",Boolean.TRUE);// ******* permite mudar para a próxima célula depois de editar a correntetabelaPecas.setSurrendersFocusOnKeystroke(true);
segue o código do meu cellEditor
publicclassFiltroInteirosJTableextendsAbstractCellEditorimplementsTableCellEditor{// This is the component that will handle the editing of the cell valueJComponentcampo=newJTextField();publicFiltroInteirosJTable(JanelaCadastrarProjetosjan){this.jan=jan;}// This method is called when a cell value is edited by the user.publicComponentgetTableCellEditorComponent(finalJTabletable,Objectvalue,booleanisSelected,introwIndex,intvColIndex){// Configure the component with the specified value((JTextField)campo).setText((String)value);((JTextField)campo).addKeyListener(newKeyListener(){publicvoidkeyTyped(KeyEvente){charc=e.getKeyChar();Stringvalor=((JTextField)campo).getText();if(!Character.isDigit(c)||valor.length()>6)e.consume();else// o dígito é aceitojan.pecasAlteradas();}publicvoidkeyPressed(KeyEvente){}publicvoidkeyReleased(KeyEvente){}});// Return the configured componentreturncampo;}// This method is called when editing is completed.// It must return the new value to be stored in the cell.publicObjectgetCellEditorValue(){Stringconteudo=((JTextField)campo).getText();conteudo=conteudo.trim();try{Integer.parseInt(conteudo);}catch(Exceptione){if(!conteudo.isEmpty())JOptionPane.showMessageDialog(null,"Insira apenas números Inteiros (máx. 7 digitos).");conteudo="";}returnconteudo;}privateJanelaCadastrarProjetosjan;}