Tecla ENTER em um JTable

3 respostas
B

Olá,

Gostaria de saber com implementar um código para que ao usuário pressionar a tecla ENTER, ao invés de o sistema o redirecionar para a linha de baixo do Jtable, ele redirecionasse para a coluna ao lado, exatamente como a função da tecla TAB, que faz isso.

3 Respostas

lina

Oi,

Sim. Isso é possível.

Utilize esse método depois da criação da sua JTable:

private void TableENTERAction(final JTable ao_table)			
	{
		//
		// Adiciona a tecla e o nome do evento ao mapa de entrada.
		//
		ao_table.getInputMap(ao_table.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke("ENTER"),"enterAction");

		//
		// Adiciona o evento ao mapa de eventos.
		//
		ao_table.getActionMap().put("enterAction", new AbstractAction()
		{
			public void actionPerformed(ActionEvent e)
			{
				// Manda o foco para a outra coluna.
				// ao_table.setColumnSelectionInterval(); Não lembro o nome direito do método...
			}
		});
	}

Tchauzin!

B

olá,
muito obrigado pelo código.
Implementei ele em meu sistema e deu quase certo.

No código que você enviou, tem um trecho comentado.

public void actionPerformed(ActionEvent e)   
        {   
            // Manda o foco para a outra coluna.   
            // ao_table.setColumnSelectionInterval(); 
       
        }

eu descomentei esse trecho, porém o método setColumnSelectionInterval me obriga a colocar o intervalo das colunas a serem selecionadas.
Eu coloquei 0 e 1 e a hora que apertei o enter, realmente ele foi para a coluna do lado, porém ao apertar novamente, ele não vai para a próxima e assim por diante.

lina

Oi,

Já dei a tarrafa e agora você quer o peixe ?! Brincadeira rsrs…

Este método precisa de um intervalo entre colunas… então você poderá utilizar contadores para isso,
ou então no primeiro argumento você passa o indice da coluna selecionada e no segundo parametro sempre soma + 1.

Estou sem tempo para olhar o método certo.

Tchauzin!

Criado 4 de fevereiro de 2010
Ultima resposta 4 de fev. de 2010
Respostas 3
Participantes 2