Pessoal, eu tenho um JFrame que por sua vez possui um JTabbedPane que contém quatro abas. Nas duas primeiras abas tenho o preenchimento de endereços, a primeira aba para o endereço de serviço e o outro o endereço de cobrança (a regra de negócio pede que seja assim). Contudo, ambos têm os mesmo campos, exceto no primeiro que tem um JCheckBox para indicar se o endereço de cobrança é diferente do endereço de serviço. Então implementei um atalho de teclado para o JComboBox de logradouros desta forma:
/*Caixa de Seleção de Logradouro (Aba Endereço Principal)*/
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_L,
InputEvent.ALT_DOWN_MASK |
InputEvent.CTRL_DOWN_MASK), "eventoAEPCbxLogradouro");
getRootPane().getActionMap().put("eventoAEPCbxLogradouro",
new AbstractAction("eventoAEPCbxLogradouro"){
@Override
public void actionPerformed(ActionEvent e) {
if(cbxLogradouro.isEnabled()){
cbxLogradouro.requestFocusInWindow();
}
}
});
Para manter as coisas semelhantes, ou seja por se tratar de informações iguais eu não quero usar uma outro combinação de teclas para o JComboBox de logradouros quando na aba Cobrança a fim de facilitar a memorização por parte do usuário. Como eu posso registrar a tecla de atalho para cada aba distintamente? Eu testei simplesmente repetindo e dando outro nome ao evento na outra aba e não funcionou. Também testei usando WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, mas assim também não funcionou gerando erro quando o painel não estiver selecionado.
Há outra maneira de fazer?
Desde já agradeço.