Mudar de textField ao pressionar ENTER

6 respostas
D

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

6 Respostas

fernandopaiva

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

t+ e boa sorte.

D

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!!!^^

D

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

D
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);
		
	}

}

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^^

E

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

fernandopaiva

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.

Criado 24 de outubro de 2011
Ultima resposta 24 de out. de 2011
Respostas 6
Participantes 4