Adicionar associações de teclas aos JButtons que obtêm suas ações a partir de comandos de ação?
Encontrei uma maneira interessante em outra pergunta para criar um JButton cujas ações são escritas e visualizadas de uma maneira fácil:
public JButton makeToolbarButton(String title, String actionCommand) {
JButton button = new JButton(title);
button.setActionCommand(actionCommand);
button.addActionListener(this);
return button;
}
A classe em que esse método está implementa o ActionListener e os comandos dos botões são atribuídos por:
public void actionPerformed(ActionEvent e) {
int action = Integer.parseInt(e.getActionCommand());
switch(action) {
case 1:
System.out.println("This button pressed.");
break;
}
}
E os botões são feitos por:
JButton button1 = makeToolbarButton("Button 1", "1");
Portanto, minha pergunta é: posso adicionar KeyStrokes a um botão por esse método? Eu tentei algo assim (dentro domakeToolbarButton
método):
button.getInputMap().put(KeyStroke.getKeyStroke("B"), "button_pressed");
button.getActionMap().put("button_pressed", button.getAction());
Mas acho que isso não funciona porque o comando action não está realmente atribuindo uma ação a um botão específico. Existe uma maneira de adicionar algo aomakeToolbarButton()
método e um parâmetro para o KeyStroke fazer isso?