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