addKeyListener - Problema

5 respostas
H

Pessoal, tenho um addKeyListener da seguinte forma:

Meu botão:

jbConsultar.addKeyListener(new AvancarListener( jtNome, jtCidade));

Segue meu KeyListener :

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JComponent;

/**
 *
 * @author Rodrigo
 */
public class AvancarListener implements KeyListener {

    JComponent next = null;
    JComponent previous = null;

    public AvancarListener(JComponent previous, JComponent next ) {
        this.previous = previous;
        this.next = next;
    }

    @Override
    public void keyTyped(KeyEvent e) {
    }

    @Override
    public void keyPressed(KeyEvent e) {
    }

    @Override
    public void keyReleased(KeyEvent e) {


        if (e.getKeyCode() == 10) {
            next.requestFocus();
        }
        
        if (e.getKeyCode() == 27) {
            previous.requestFocus();
        }
    }
}

alguem me ajuda por favor?
Por que raios, quando eu aperto a "barra de espaco (e.getKeyCode() == 32)" ele executa o botao?

ja tentei ateh por um IF

if (e.getKeyCode() == 32) {
        }

5 Respostas

Eric_Yuzo

O padrão do JButton é ser acionado pela barra de espaço quando ele estiver com o foco.

Há algum problema com esse comportamento? Se precisar mesmo tirar, pode associar uma action que não faz nada pelo InputMap.

H

entao, gostaria de saber qual a possibilidade de quando a pessoa apertar “enter” se ele estiver com o foco ele acionar… isso é possivel?

Eric_Yuzo

Sim. Dá pra setar uma propriedade pelo UIManager pra fazer com que o botão com o foco se torne o default button da janela (o default button de uma janela é aquele que é acionado quando a tecla enter for pressionada).

Executando esta linha antes de instanciar a janela já faz automaticamente com que o botão com foco seja o default button.

Aqui tem uma explicação um pouco mais detalhada com um exemplo de código: http://devsv.wordpress.com/2012/08/20/acionando-botoes-de-um-jframe-com-a-tecla-enter/

H

Então… meu problema é

meu botao está sendo executado com a tecla enter sem receber nenhuma implementacao… eu sei que isso nao é mágica, mas, qual o “milagre” disso? o que eu fiz que nao me dei conta?

Obrigado por qualquer ajuda!

EDIT: Bom acabei de perceber que isso está ocorrendo por causa do look and feel, agora alguem pode me ajudar em tirar a funcao do enter nos botoes?, tentei fazer o dica acima, mas não funcionou…

H

Pessoa, segue solução…

jButton1.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), "none");

Criado 15 de outubro de 2013
Ultima resposta 17 de out. de 2013
Respostas 5
Participantes 2