O machado… mesmo assim eu continuo achando que esse evento deve ser associado
ao JMenuItem =]
Abraços[/quote]
A vantagem de linguagens de programação como o java é que você pode ter uma série de opções para resolver o mesmo problema.
Pense comigo, por que você precisaria criar um JMenuItem para identificar as teclas utilizadas se você pode, simplesmente, associar eventos diretamente a elas?
Entendo tua forma de pensar, mas, na minha opinião, seria redundância e duplicação de código.
Mas, sim, pode ser associado à JMenuItem.
[quote=drsmachado]
Pense comigo, por que você precisaria criar um JMenuItem para identificar as teclas utilizadas se você pode, simplesmente, associar eventos diretamente a elas?
Entendo tua forma de pensar, mas, na minha opinião, seria redundância e duplicação de código.
Mas, sim, pode ser associado à JMenuItem.[/quote]
Entãoo…
deixa eu te mostrar mais ou menos o que eu to falando…
uma aplicaçãozinha desktop que eu fiz… Toda as teclas eu tenho atalhos no JMenuItem…
(Fiz no netbeans msmo)… só que tipo, quando associo o atalho ao botão o netbeans gera um código tipo este:
itemContasReceber.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, 0));
itemContasReceber.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagem/receber.png"))); // NOI18N
itemContasReceber.setText("Contas à Receber");
itemContasReceber.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
itemContasReceberActionPerformed(evt);
}
});
entende? Então quero dizer que não é ‘duplicar’ código nem nada…
masss, se vc n for usar JMenuBar na tua aplicação, aí sim…
Algumas palavras chaves :
keylistener
keyadapter
keystrokes
E por ae vai.
Faz teu jframe principal implementar keylistener, ai se tu fizer certo(não colocando lógica nos actionperformed ) basta chamar os métodos de negócios de acordo com as teclas.
A questão dos botões é que, dependendo de como a implementação é feita, as teclas de atalho simplesmente não funcionam.
Por isso sugeri o tópico criado pelo ViniGodoy, onde ele exemplifica de forma bem clara isto.
Lógico que o exemplo é meio 8 ou 80, mas é uma forma de fazer isso.
fredferrao, embora a tua sugestão seja legal, eu já discordo da implementação de keylistener, prefiro fazer isso separado e implementar o pattern observer,
A forma correta de fazer isso é como está no post que o drsmachado colocou ali e que eu escrevi.
Quando falamos em “tecla de atalho”, não podemos garantir o foco em nenhum componente específico, daí a necessidade do InputMap e do ActionMap.
Só um detalhe… por que esse tópico foi aberto em “Assuntos gerais”? O fórum específico correto para ele é o de Interface Gráfica.
Assim você evita respostas em web, como a do Ileos.