Problema em manipular cursor de TableModel! [resolvido]

E ae galera blz?

Analisem o código abaixo:public void keyPressed(KeyEvent evt) { if (evt.getKeyCode() == KeyEvent.VK_DOWN){ JTProdutos.changeSelection(0,0,true,true); modelo.addRow(new String[]{"","",""}); contlinhas++; numlinhas++; } if (evt.getKeyCode() == KeyEvent.VK_ENTER){ int indicelinha = JTProdutos.getSelectedRow(); int indicecoluna = JTProdutos.getSelectedColumn(); indicelinha++; indicecoluna++; JTProdutos.changeSelection(indicelinha,indicecoluna,true,true); }

Então o problema é que: Vamos supor que estou inserindo a 4ª nova linha, quando eu digito os dados da 1ª célula da 4ªlinha e teclo ENTER o cursos vai para 2ªcoluna só que vai tabmém para 1ªlinha, alguém sabe como posso corrigir isso? :lol:

Desde já, valeu! 8)

Olha cara, eu tava dando um olhada por ai ( http://www.javadesktop.org/forums/thread.jspa?threadID=10745&tstart=0 ) e vi que o melhor jeito de manipular ações no teclado é via o InutMap e ActionMap. Então fiz um teste aqui e funcinou legal.

Segue o meu codigo.

        getTabela().getInputMap().put(KeyStroke.getKeyStroke("ENTER"), "actionString");
        getTabela().getActionMap().put("actionString", new AbstractAction() {
            public void actionPerformed(ActionEvent ae) {
                int row = getTabela().getSelectedRow();
                int col = getTabela().getSelectedColumn();
                if( col+1 < getTabela().getColumnCount() ){
                    col++;
                }else{
                    col=0;
                    if( row+1 < getTabela().getRowCount() ){
                        row++;
                    }else{
                        row=0;
                    }
                }
                getTabela().setRowSelectionInterval(row, row);
                getTabela().setColumnSelectionInterval(col, col);
            }
        });

Divirta-se!

Valeu Bruno, nossa valeu mesmo…

Só que seria sorte demias dar tudo certo né hahah…

O único bugzinho que deu agora, é que quando edito a primeira célula de qualquer linha e teclo ENTER o cursor vai para próxima linha mas ainda fica aberto para edição a célula em que digitei…estranho né?
Se souber o que pode ser tb… :lol:

Mesmo assim valeu! 8)

Ai é com vc! Hehehehe…
Verifica a possibilidade de colocar um focusListener no cellEditor pra chamar o método stopEditingCell dele. Talvez resolva seu problema.

Isso aconte pq teu celleditor tá repassando o evento de enter direto pra jtable ( eu acho )…rss… intercepta ele…

flw!

Deu certo hauhaua veja como ficou a criança:

[code]JTProdutos.getInputMap().put(KeyStroke.getKeyStroke(“ENTER”), “actionString”);
JTProdutos.getActionMap().put(“actionString”, new AbstractAction() {
public void actionPerformed(ActionEvent ae) {

 				             	int row = JTProdutos.getSelectedRow();
 				             	int col = JTProdutos.getSelectedColumn();
 				             	if( col+1 < JTProdutos.getColumnCount() ){
 				             		col++;
 				             		JTProdutos.getCellEditor().stopCellEditing();
 				             	}else{
 				             		col=0;
 				             		if( row+1 < JTProdutos.getRowCount() ){
 				             			row++;
 				             			JTProdutos.getCellEditor().stopCellEditing();
 				             		}else{
 				             			row=0;
 				             			JTProdutos.getCellEditor().stopCellEditing();	 				             		
 				             		}
 				             	}
 				             	JTProdutos.setRowSelectionInterval(row, row);
 				             	JTProdutos.setColumnSelectionInterval(col, col);
 				             }
 						});[/code]

Só que agora após dar ENTER, ele bloqueia a célula, daí só se vc editar novamente, mas isso tá tranquilo!!!

Valeu pela ajuda!!! 8)

Aee…! Foi mais facil do que eu pensie… hehehe… Legal :wink: