Aperto F1, mas frame não aparece

3 respostas
FabricioPJ

Olá a todos. Fiz um frame principal que fornece vários botões para abrir outros frames. Até ai tudo ok, o problema é que estou usando java.awt.event.KeyEvent para abrir esses frames ao pressionar um botão do teclado, só que isso não está funcionando.

Coloquei o KeyPressed no frame mesmo, ao contrário de um outro frame, que o KeyPresses está em um TextField, ou seja, quando um usuário digita sua senha nesse TextField, ao apertar enter, se a senha for válida, o frame principal aparece. Nesse frame com senha, o KeyPressed está funcionando, o problema mesmo é com o frame principal.Vejam o código para abrir uma opção do frame principal ao apertar a tecla F1:

private void formKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode() == KeyEvent.VK_F1){ frameCadastroGeral fcg = new frameCadastroGeral(); fcg.setLocationRelativeTo(null); fcg.setVisible(true); }

Alguém pode me dar uma luz sobre como esclarecer esse problema?

3 Respostas

Robsonramosabrao

no teu frame tem a método main() implementado:

public static void main(String args[]){
             new frameCadastroGeral().show(); 
}

Se não tenta pegar o Código da tecla:

//pressione F1
int tecla = evt.getKeyCode() ;
if(evt.getKeyCode() == tecla){

}
FabricioPJ

Desculpem pela demora na resposta.

Caro colega, não consegui resolver o problema. O que acho mais estranho é que quando ponho um evento KeyPressed no JPanel, funciona:

if(evt.getKeyCode() == KeyEvent.VK_F1) JOptionPane.showMessageDialog(null, "Funcionou o F1");

Agora isso não funciona:

if(evt.getKeyCode() == KeyEvent.VK_F1) meuFrame frame = new meuFrame(); frame.setVisible(true);

Ou seja, o JOptionPane funciona normalmente quando aperto F1, agora para abrir um frame que já criei, não funciona.

Alguém tem alguma solução?

FabricioPJ

Opa, acho que resolvi o problema. O que fiz foi criar um JLabel, e colocar no construtor do frame a linha meuJLabel.requestFocus(), ou seja, toda vez que o frame inicia, o label estará “focado”. Feito isso, criei os eventos “KeyPressed” em cima deste JLabel, então quando aperto F1, agora o frame que deveria aparecer, aparece.

Criado 2 de dezembro de 2007
Ultima resposta 13 de dez. de 2007
Respostas 3
Participantes 2