Pessoal, tô querendo colocar teclas de atalho para Jbuttons, tipo Insert pra inserir um novo, delete pra excluir e coisa do tipo, quero sem alt e sem Ctrl.
Tem um monte de tópicos aqui falando sobre isso, mas nenhum mostra a melhor solução, tem um monte de coisas estranhas e um monte que não funciona.
Gostaria de saber se tem como implementar isso, e qual a melhor forma de fazer.
Ah, e no netBeans, tem lá algumas coisas sobre definir ação, mas não dá certo! Porque que isso acontece? Alguém que usa o NetBeans, sabe porque isso acontece? O que eu posso estar fazendo errado?
Se quiserem ver o código que o NetBeans gera, me peçam.
Já experimentou criar um evento keyListener no seu formulário?
Ele poderia interceptar os eventos e em seguida redirecionar para o componente/evento em questão. O que me diz?
Parece que os forms só aceita ActionListener, Olha aí:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Listener telas.JInternalPaises$1@59e184cb is not of type interface java.awt.event.ActionListener
[quote=dudu_sps]http://guj.com.br/posts/list/140986.java
da uma olhada… as vezes ajuda[/quote]
Ajudou muito!!!
Dá pra fazer com essa idéia sem problemas!!!
Pelo NetBeans ainda não consegui, só com Mnemonic mesmo, mas aí o usuário tem que usar o alt também, e não é exatamente isso que eu quero!
Mas estou tento um problema particulamente com o ESC, naum dá certo pra atalho de Cancelar, dêem uma olhada no código:
//Construtor do meu JFrame
//Action Map
ActionMap actionMap = getActionMap();
actionMap.put("actionNovo", new AbstractAction() {
public void actionPerformed(ActionEvent e) {
if (cmdNovo.isEnabled()) cmdNovoActionPerformed(null);
}
});
actionMap.put("actionSalvar", new AbstractAction() {
public void actionPerformed(ActionEvent e) {
if (cmdSalvar.isEnabled()) cmdSalvarActionPerformed(null);
}
});
actionMap.put("actionCancelar", new AbstractAction() {
public void actionPerformed(ActionEvent e) {
if (cmdCancelar.isEnabled()) cmdCancelarActionPerformed(null);
}
});
//Input Map
InputMap inputMap = getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(KeyStroke.getKeyStroke("INSERT"), "actionNovo");
inputMap.put(KeyStroke.getKeyStroke("ENTER"), "actionSalvar");
KeyStroke key = KeyStroke.getKeyStroke("ESCAPE");//Quando dou um break aqui, a variável não está nula, ESCAPE pressed, ou algo do tipo
inputMap.put(key, "actionCancelar");
Todas as outras ações estão funcionado, o ESC do meu teclado não está com problema
, e quando debugo o código a variável key tem um valor atribuído a ela!
Seria o sistema operacional que está fazendo alguma coisa com a tecla antes do actionMap saber que ela foi teclada? Alguém tem alguma idéia?