Prezados, Bom dia.
Em meu projeto tenho um método que utilizou para através das teclas de atalho F1, F2 e etc…
Eu vi aqui mesmo no GUJ uma pergunta parecida e verifiquei o código e apliquei no meu projeto.
O Problema é que a tecla F1 está funcionando quando eu pressiono, mas quando eu aperto outra tecla F2, não acontece nada, agora percebi que se eu ficar pressionando um monte de teclas ele trava um pouco depois é exibida a ação do F2, é como se em algum lugar a ação ainda estive presa no F1( primeira tecla pressionada)
Segue o meu Código:
public class TelaVendas extends javax.swing.JFrame {
private AcaoBotao botaoF1 = new AcaoBotao(“F1”);
private AcaoBotao botaoF2 = new AcaoBotao(“F2”);
public TelaVendas() {
initComponents();
RegistrarAcaoBotao(jPanel2);
lblQuantidade.setEnabled(false);
txtAlteraQuantidade.setEnabled(false);
//txtAlteraQuantidade.setVisible(false);
}
private class AcaoBotao extends AbstractAction {
private String tecla;
public AcaoBotao(String tecla) {
super(tecla);
this.tecla = tecla;
}
@Override
public void actionPerformed(ActionEvent ae) {
switch (tecla) {
case "F1":
TelaPesquisaVendas telapesq = new TelaPesquisaVendas(TelaVendas.this, true);
telapesq.setVisible(true);
break;
case "F2":
Double desconto, total, calculo;
Double desc = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite a porcentagem de Desconto .: "));
desc = (desc * Double.parseDouble(lblTotal.getText()))/100;
desconto = desc ;
lblDesconto.setText(""+desconto);
total = Double.parseDouble(lblTotal.getText());
calculo = total - desconto;
lblSubTotal.setText(""+calculo);
break;
}
}
}
Esse é o Método que Registra a Ação do Botão:
private void RegistrarAcaoBotao(javax.swing.JPanel panel) {
ActionMap actionmap = panel.getActionMap();
actionmap.put("F1", botaoF1);
actionmap.put("F2", botaoF2);
panel.setActionMap(actionmap);
InputMap inputmap = panel.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);
inputmap.put(KeyStroke.getKeyStroke("F1"), "F1");
inputmap.put(KeyStroke.getKeyStroke("F2"), "F2");
}