Boa tarde,
fiz este exemplo de acordo com uma solução do VinyGodoy (excelente por sinal) e que funciona. Porém, dentro do JFrame tenho um JDesktopPane que possui vários JPanels com botões e etc. O problema é que toda vez que ‘actionPerformed’ é executado o resultado trazido pelo ‘getSource’ é o próprio JDesktopPane. Ocorre que dessa forma, não consigo saber qual botão foi pressionado para direcionar a execução do fluxo. Segue abaixo um trecho:
public class JFramePrincipal extends javax.swing.JFrame {
private class TecladoAction extends AbstractAction {
@Override
public void actionPerformed(ActionEvent e) {
// o resultado trazido pelo 'getSource' é o próprio JDesktopPane
}
}
private TecladoAction tecla_F12 = new TecladoAction();
private TecladoAction tecla_F11 = new TecladoAction();
private void registrarAcoesDoTeclado(JDesktopPane painel) {
ActionMap actionMap = painel.getActionMap();
actionMap.put("btnDlgRoot", tecla_F12);
actionMap.put("btnConfigCabinete", tecla_F11);
painel.setActionMap(actionMap);
InputMap imap = painel.getInputMap(JDesktopPane.WHEN_IN_FOCUSED_WINDOW);
imap.put(KeyStroke.getKeyStroke("F12"), "btnDlgRoot");
imap.put(KeyStroke.getKeyStroke("F11"), "btnConfigCabinete");
}
private JDesktopPane desktop;
private JFileChooser openDialog;
private Processo processo;
private Colaborador colaborador;
public JFramePrincipal() {
initComponents();
desktop = new JDesktopPane(); // Sempre traz este componente no getSource do actionPerformed <-----
setContentPane(desktop);
desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE); // Make dragging a little faster but perhaps uglier.
desktop.setBackground(new Color(240, 240, 240));
// Componentes visuais são adicionados ao JDesktopPane
adicionaComponentes();
registrarAcoesDoTeclado(desktop);
Alguém pode ajudar?