Mudar de textField ao pressionar ENTER

Olá pessoal, tenho um formulário e quero que ao terminar de preencher cada campo o cursor se posicione no próximo e quando chegar no último submter as ações como se fosse um botão, ja dei uma lida sobre isso, mas não consegui enter alguém pode me ajudar?

Muito Obrigado

veja isso: http://www.guj.com.br/java/252653-jtextfield---enter---proximo-foco

t+ e boa sorte.

Você tem que usar um KeyAtionListener, e fazer verificar se o que o cara apertou é enter, se for, você da um setfocus no proximo campo que você quer, e quando chegar no ultimo campo você submete na ação que vocÊ quer^^

se não ficar claro avisa que eu posto um código pra vc ver!!!^^

Daniel, se pudesse mostrar um códi go de exemplo eu agradeço…tenho muitas dúvidas em relação ao listener…
Obrigado

[code]package br.bria.model.dao;

import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Tela extends JFrame {

JTextField caixa1, caixa2;

public static void main(String args[]) {
	
	new Tela().setVisible(true);
}

public Tela(){
	
	montaComponentes();
	montaEventos();
	montaTela();
	
}

private void montaEventos() {
	caixa1.addKeyListener(new KeyListener() {
		
		@Override
		public void keyTyped(KeyEvent e) {				
			
		}
		
		@Override
		public void keyReleased(KeyEvent e) {				
			
		}
		
		@Override
		public void keyPressed(KeyEvent e) {
			if(e.getKeyCode()==10){
				caixa2.requestFocus();
			}
			
		}
	});

caixa2.addKeyListener(new KeyListener() {

		@Override
		public void keyTyped(KeyEvent e) {				
			
		}
		
		@Override
		public void keyReleased(KeyEvent e) {				
			
		}
		
		@Override
		public void keyPressed(KeyEvent e) {
			if(e.getKeyCode()==10){
				caixa1.requestFocus();
			}
			
		}
	});
	
}

private void montaComponentes() {
	caixa1 = new JTextField(15);
	caixa2 = new JTextField(15);
	
	setLayout(new FlowLayout());
	
	add(caixa1);
	add(caixa2);
	
	
	
}

private void montaTela() {
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setSize(800, 600);
	setLocationRelativeTo(null);
	
}

}
[/code]

Pronto nesse caso se você estiver na caixa1 ele passa para a caixa2 e vic-versa
qualquer duvida pode perguntar!

O jeito que o Fernando passou eu não conheço, vou estudar assim que tiver um tempo^^

Não use KeyListener para isso. Você provavelmente vai ver que isso tem de ser posto em todos os TextFields.
Em vez disso, veja o seguinte:


http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html

siga a maneira q respondi, basta vc enviar o JPanel onde esta os JTextFields para a classe q postei. Não use Liesteners pra isso.

exemplo.

import java.awt.AWTKeyStroke;  
import java.awt.KeyboardFocusManager;  
import java.awt.event.KeyEvent;  
import java.util.HashSet;  
import javax.swing.JPanel;  
  
public class PassaCamposComEnter {  
  
   public void passaCamposComEnter(JPanel painel){  
        // Colocando enter para pular de campo  
        HashSet conj = new HashSet(painel.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));  
        conj.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, 0));  
        painel.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, conj);  
    }  
}  
  
//pra invocar  
JPanel panelCampos = new JPanel();
panelCampos.add(new JTextField(20));
new PassaCamposComEnter(panelCampos);  

Ja respondi a esse post aqui: http://www.guj.com.br/java/252653-jtextfield---enter---proximo-foco

t+ e boa sorte.

1 curtida