Olá pessoal !!! Estou com um problema. Eu estou criando um pagina de login pro meu programa e estava querendo que quando precionar enter os componentes trocassem de foco, mas não estou conseguindo. Olhem o codigo abaixo:
private void keyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if(evt.getKeyCode()==10){
this.transferFocus();
}
}
só que ele não faz nada.
Tente utilizar o requestFocus() do componente que deve receber o foco.
já tentei isso. coloquei assim:
//jTextfield1
private void keyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if(evt.getKeyCode()==10){
jTextField2.requestFocus();
}
}
vc adicionou esse evento ao frame ou JTExtField ?
o enter nao é o 13 ?
faz um teste e imprime o key digitado… usando System.out…
vc tb pode fazer uma rotina… que pegue todos os componentes da tela… e adicione um listener… dessa forma tornado a tela toda navegável com enter, de forma dinamica
Eu fiz um teste e deu 10, mas tambem tentei com VK_ENTER e não deu certo. e sobre o listener eu adicionei o keypressed como listener de todos os componentes do form. Se vc quiser um ti mando o executavel pra vc ver o que está acontecendo.
obs.: No programa o listener está como a primeira funcão que postei.
Você precisa tratar a digitação de qualquer tecla?
Caso negativo, você poderia trocar seu listener para um ActionListener, o que faria desnecessária esta verificação de qual tecla foi pressionada (o listener será ativado apenas quando o usuário pressionar enter).
mas de qual maneira eu faria isso?? se o este listener não capitura o KeyEvent? Ele captura o ActionEvent e por ele não tem como eu capturar a tecla
Você precisa capturar a tecla?
Dá uma olhada neste exemplo:
public class FocusTest extends JFrame implements ActionListener {
private JTextField tf1;
private JTextField tf2;
public FocusTest() {
tf1 = new JTextField(10);
tf1.addActionListener(this);
super.add(tf1, BorderLayout.NORTH);
tf2 = new JTextField(10);
tf2.addActionListener(this);
super.add(tf2, BorderLayout.SOUTH);
super.pack();
super.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
super.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent evt) {
if (tf1.equals(evt.getSource())) {
tf2.requestFocus();
} else {
tf1.requestFocus();
}
}
public static void main(String[] args) {
FocusTest focusTest = new FocusTest();
}
}
Nele, o foco alterna entre os TextFields ao pressionar Enter, mas se pressionar qualquer outra tecla o foco permanece o TexField atual.
vlw vou tentando aqui. Me parece que o jTextField1 está com problema no codigo sobre mudar de foco. Vou averiguar e qualquer problema volta aqui. Vlw galera. Até
obs.: se tiverem qualquer ideia, por favor postem aqui.