Input map pressionando duas teclas [RESOLVIDO]

2 respostas
lary_nascimento

oi oi.

Bom, possuo um jframe de cadastro, com os botões de navegação primeiro, anterior, proximo e ultimo.
No caso do anterior e proximo, eu consegui fazer a navegação entre os registros, como o exemplo abaixo:

KeyStroke direita = KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0);  
        Action actionListenerright = new AbstractAction() {  
  
            public void actionPerformed(ActionEvent actionEvent) {  
                btnProximo.doClick();  
            }  
        };  
        InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);  
        inputMap.put(direita, "Direita");  
        rootPane.getActionMap().put("Direita", actionListenerright);

Porém eu queria que o primeiro e o ultimo fossem acionados ao apertar Shift+Left e Shift+Right, mas não sei como fazer disparar o evento apertando duas teclas ao mesmo tempo.

Aproveitando... o actionEvent só funciona se não estiver em foco nenhum jtextfiel ou um outro botão que não seja ele mesmo, achei isso estranho por que como eu li em alguns lugares, é pra ser acionado a qualquer momento né? por que isso acontece?
Obrigada!

2 Respostas

E

http://docs.oracle.com/javase/6/docs/api/javax/swing/KeyStroke.html#getKeyStroke(int,%20int)

O segundo parâmetro é a tecla adicional a ser pressionada - Shift, Ctrl, Alt, AltGraph (que é o Alt da Direita), Meta (que é a tecla Command do MacOSX).

Quando você usa 0 (é o que vi no seu programa), você está dizendo que não vai usar nenhuma tecla adicional a ser pressionada.

lary_nascimento

entanglement:
http://docs.oracle.com/javase/6/docs/api/javax/swing/KeyStroke.html#getKeyStroke(int,%20int)

O segundo parâmetro é a tecla adicional a ser pressionada - Shift, Ctrl, Alt, AltGraph (que é o Alt da Direita), Meta (que é a tecla Command do MacOSX).

Quando você usa 0 (é o que vi no seu programa), você está dizendo que não vai usar nenhuma tecla adicional a ser pressionada.

Obrigada, funcionou mais uma vez! :smiley:

Criado 29 de abril de 2013
Ultima resposta 29 de abr. de 2013
Respostas 2
Participantes 2