Tabulação com ENTER

Como faço para saltaer :?: entre componentes de uma janela (textfield, buttons, choices) usando ENTER ao invés de TAB

Wagner, o esquema nao eh muito complicado, apesar de eu ter ficado um bom tempo pesquisando. O esquema eh assim:

  1. Existe uma interface chamada KeyListener, a qual define metodos para a manipulacao de eventos de teclado nos componentes.

  2. Voce precisara usar o metodo keyPressed da interface KeyListener para manipular os caracteres.

  3. O codigo do enter eh VK_ENTER, o qual esta definido na classe KeyEvent.

  4. Para passar o focus para o proximo componente, eh necessario usar o metodo getComponent disponivel em KeyEvent.

  5. Por final, basta chamar o metodo transferFocus() da classe Component.

Abaixo tem o codigo necessario para isso funcionar ( note que algumas coisas voce devera implementar, caso deseje outras funcionalidaes. )

import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.Component;

// ... 

class MinhaClasse implements KeyListener
{
	// ....
	JTextField meuField = new JTextField();

	// voce precisa chamar addKeyListener(this) para cada
	// componente que quiser manipular. No caso, eh um
	// JTextField
	// Note que voce deve chamar isso em um lugar apropriado, 
	// aqui apenas coloquei como exemplo
	meuField.addKeyListener(this);

	// Agora eh necessario implementar keyPressed
	public void keyPressed(KeyEvent ke)
	{
		if (ke.getKeyCode() == ke.VK_ENTER) {
			// Pega o componente de onde veio o evento

			Component c = ke.getComponent();

			// transfere o foco para o proximo componente
			c.transferFocus();
			c = null;
		}
	}

	// Esses 2 abaixo sao apenas para o compilador nao xiar
	public void keyTyped(KeyEvent ke)
	{		
	}

	public void keyReleased(KeyEvent ke)
	{
	}
}

Pronto!! basicamente eh isso. Para maiores informacoes eh bom voce consultar a API referente a cada parte, pois tem muitos metodos interessantes.

http://www.guj.com.br/api/j2se.html?api=java.awt.event,KeyEvent
http://www.guj.com.br/api/j2se.html?api=java.awt.event,KeyListener
http://www.guj.com.br/api/j2se.html?api=java.awt,Component

[]'s
Rafael Steil

apenas uma colocacao

pessoal, o Rafael levou um bom tempo para ver todas as possibilidades e tal, de como fazer isto que o Wagner perguntou!! Ele ta pirando!

Bem
tambem acho essa a solucao mais viavel!

Muito bom! :smiley:

Funcionou mesmo Rafael.

Tinha pensado em algo assim mas não sabia como implementar.

Thanks!

O Rafael mandou muito bem realmente ! Parabéns !

Por estas e outras o GUJ faz a diferença ! :smiley: