Evento do Teclado

ola Pessoal …

Estou com 2 probleminhas …

1 - tenho um Jframe com alguns JTextFields e preciso que quando estaja for trocar de campo para preencher isso seja feito com um ENTER e nao um TAB
2 - nessa mesma tela , preciso fazer teclas de atalho … por ex: F2 para salvar … F3 para excluir … F9 para sair etc…!! os metodos para cada uma das açoes eu ja tenho . mas me falta os KeyListener para essas teclas…!!

alguem podeira me ajudar…!!

Valew…

pra passar para o proximo JTextField apertando enter, basta por um ActionListener q faca isso, eh soh usar o metodo getSource() de ActionEvent para ver o proximo campo, depois eh soh chamar o metodo requestFocus() do proximo JTextField q ele vai ganhar o foco…

para as teclas de atalho, primeiro vc vai ter q criar um KeyListener, adicionar o keylistener apenas para a janela n vai resolver pq os JTextField vao “roubar” o evento e o keylistener n vai ser executado, a solucao seria adicionar esse mesmo keylistener em todos os JTextFields.

dai no metodo keypressed, vc poe algo assim:

public void keyPressed(KeyEvent e){
 if (e.getKeyCode() == KeyEvent.VK_F2) salvar();
 else if (e.getKeyCode() == KeyEvent.VK_F3) exluir();
 else if ...
 ...
}

aproveitando o tópico, como faço pra passar o foco pra outro jtextfield? Deixa eu ser mais claro, por exemplo uma textfield seria para preenchimento dos numeros do cpf antes do digito e na outra seria pra os outros dois números! Como faço pra fazer o foco mudar direto sem q o usuário aperte nenhum botão?
Se possível, mostrar o código agradeço!!! :lol:

vc pode por um keylistener no jtextfield, e verificar o tamanho do jtextfield.
no exemplo jah botei q verifica se eh numero :wink:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Exemplo extends JFrame{
 private static JTextField t1, t2;
 private static final int NUMEROS = 5;
 public Exemplo(){
  addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});
  Container c = getContentPane();
  c.setLayout(new FlowLayout());
  t1 = new JTextField();
  t2 = new JTextField();
  t1.addKeyListener(new KeyAdapter(){
   public void keyTyped(KeyEvent e){
    if (!Caracter.isDigit(e.getKeyChar())){
     String s = t1.getText();
     t1.setText(s.substring(0, s.length() - 1));
    }
    if (t1.getText().length() == NUMEROS) t2.requestFocus();
   }
   });
  pack();
  setVisible(true);
 }
 public static void main(String args[]){
  new Exemplo();
 }
}