Acionar botão com teclado em foco em jTextField.  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
petter
Virtual Machine Man

Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline

Pessoal quando estou no jTextField eu capturo se o usuário digitou determinada tecla da seguinte maneira:


Minha dúvida é como fazer quando o cara digitar o F9 o botão x ser pressionada e logicamente todo o código dentro dele ser executado?

-----------------------------------------
Java is the future
-----------------------------------------
[WWW]
emmanuel.silva
JavaTeenager
[Avatar]

Membro desde: 26/05/2006 10:46:57
Mensagens: 169
Localização: Curitiba
Offline

Para exeuctar um evento de um botão sem precisar que o usuario clique pode utilizar o metodo doClick() no JButton:

MyButton.doClick();


Valeu.

[MSN]
petter
Virtual Machine Man

Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline

Valeu cara, tá funcionando beleza.

Só um detalhe, para um F9 eu faço como no exemplo que postei e para simular um CTRL + Q. Como seria?

-----------------------------------------
Java is the future
-----------------------------------------
[WWW]
emmanuel.silva
JavaTeenager
[Avatar]

Membro desde: 26/05/2006 10:46:57
Mensagens: 169
Localização: Curitiba
Offline


Vc verifica o modificar do evento, assim vc pode verificar se o usuario pressionou o ALT + alguma tecla ou CTRL + alguma tecla , etc....
tenta assim:

if(KeyEvent.getKeyText(evt.getKeyCode()) == "F9" && evt.getKeyModifiersText() == KeyEvent.SHIFT_MASK ){

}
[MSN]
petter
Virtual Machine Man

Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline

Cara tá dando um erro:


Travei...

-----------------------------------------
Java is the future
-----------------------------------------
[WWW]
emmanuel.silva
JavaTeenager
[Avatar]

Membro desde: 26/05/2006 10:46:57
Mensagens: 169
Localização: Curitiba
Offline

Post o codigo ai para eu ver o que esta acontecendo
[MSN]
emmanuel.silva
JavaTeenager
[Avatar]

Membro desde: 26/05/2006 10:46:57
Mensagens: 169
Localização: Curitiba
Offline

Vc pode fazer o seguinte

vc pode mapear essa tecla de atalho no seu frame, fazendo com que em qualquer lugar do frame quando o usuario por exemplo clicar CTRL + Q :

KeyStroke ksSalvar = KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.SHIFT_MASK, true);
getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ksSalvar, "SalvarAction");
getRootPane().getActionMap().put("SalvarAction", new AbstractAction() {
private static final long serialVersionUID = -4928658259483500995L;
public void actionPerformed(ActionEvent ae) {
//codifique aqui
}
});


Se vc não quiser nemhum modificar por exemplo só a tecla q, vc cria o KeyStroke e no lugar do KeyEvent.SHIFT_MASK vc coloca 0

então quando vc iniciar o frame e todos os objetos na tela chame esse trecho de código blz...

[MSN]
petter
Virtual Machine Man

Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline

Cara fiz o exemplo que vc falou e ele só funciona na combinação SHIFT + Q, quando eu teclo CRTL + Q não acionada nada.
Tentei no código mudar para CTRL mas tem consegui. Tem como isso ser feito?

-----------------------------------------
Java is the future
-----------------------------------------
[WWW]
emmanuel.silva
JavaTeenager
[Avatar]

Membro desde: 26/05/2006 10:46:57
Mensagens: 169
Localização: Curitiba
Offline

Cara, tenta assim troquei a linha JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
para JComponent.WHEN_IN_FOCUSED_WINDOW
ou seja quando a janela estiver em focus vai funcionar, agora acho que vai, testei
aqui tanto com o SHIFT quanto o CTRL.

agora eu acho que vai


KeyStroke ksSalvar = KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_MASK, true);
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(ksSalvar, "SalvarAction");
getRootPane().getActionMap().put("SalvarAction", new AbstractAction() {
private static final long serialVersionUID = -4928658259483500995L;
public void actionPerformed(ActionEvent ae) {
JOptionPane.showMessageDialog(null, "Teste");
}
});
[MSN]
petter
Virtual Machine Man

Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline

Valeu cara. Agora funcionou legal.

-----------------------------------------
Java is the future
-----------------------------------------
[WWW]
petter
Virtual Machine Man

Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline

Tinha pintado outra duvida aqui mas já resolvi.
Valeu.

-----------------------------------------
Java is the future
-----------------------------------------
[WWW]
emmanuel.silva
JavaTeenager
[Avatar]

Membro desde: 26/05/2006 10:46:57
Mensagens: 169
Localização: Curitiba
Offline

blz cara, qualquer duvida é só postar
[MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team