KeyPressed

3 respostas
S

Ola pessoas, n estou entendendo pq nao esta funcionando o keypressed fiz tudo correto veja

@Override
    public void keyPressed(KeyEvent e) {
        switch (e.getKeyCode()) {
            case KeyEvent.VK_F1:
                System.out.println("caralho de asa");
                break;
Init implements ActionListener, KeyListener{

e

frame.addKeyListener(this);

mas mesmo assim n tenho o retorno do println :frowning: alguem sabe pq? sempre deu certo !! ;\

3 Respostas

ViniGodoy

Se você quiser fazer teclas de atalho, use um ActionMap e um KeyMap.

O evento só funciona se o componente que está recebendo o evento de tecla tiver foco. Além disso, eventos de tecla não tem um comportamento multiplataforma.

S
KeyStroke ctrlBKey = KeyStroke.getKeyStroke(KeyEvent.VK_B, InputEvent.CTRL_MASK);

agora n sei o q fazer com esse keystroke !!

ViniGodoy

Ué, pq vc está pegando o ctrlb se você quer que a ação ocorra no F1?

Teria que fazer algo assim:
JPanel painel = (JPanel)getContentPane();
InputMap imap = painel.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);  
imap.put(KeyStroke.getKeyStroke("F1"), "acaoF1");  

ActionMap actionMap = painel.getActionMap();  
actionMap.put("acaoF1", new AbstractAction() {
    public void actionPerformed(ActionEvent evt) {
          System.out.println("caralho de asa"); 
    }
});
Criado 23 de janeiro de 2012
Ultima resposta 25 de jan. de 2012
Respostas 3
Participantes 2