Tenho um app feito com Swing, preciso que a qualquer momento que o usuário teclar F10 esse botão seja acionado. Tem como fazer isso?
botao.setMnemonic(KeyEvent.VK_F10);
Sim, você pode dar uma olhada nos javadocs de java.awt.Action e javax.swing.KeyStroke
espero que ajude… flw
Cara o lance da tecla de função não virou. Uso o NetBeans e joguei em tudo quanto era canto e não rolou.
É o seguinte, dessa
vc tera a usar alt F10 para fazer a ação no botão
agora so apertando F10 se fosse em um menu seria assim
se for na aplicação vc poderia fazer assim resgistra um key evente para a tela e na ação do key event vc verifica se a tecla apertada foi F10 se tiver sido vc chama o metodo q faz oq vc quer.
qq coisa grita ai.
Falou
Deixa eu ver se peguei o espiríto do que deve ser feito. Como eu capturo se a tecla F10 foi precionada. Não tenho idéia de como fazer isso.
[code]this.addKeyListener(new KeyAdapter(){ //registra um KeyListener para o componente
public void keyReleased(KeyEvent e) { // metodo q tratara o evento
if(e.getKeyCode() == KeyEvent.VK_F10) //verificando se o a tecla q o usuario precionou fo F10
System.out.println("Tecla F10 Precionada"); //se for F10 emite essa mensagem
}
});[/code]
tem um tutorial no PJ http://www.portaljava.com/home/modules.php?name=Content&pa=showpage&pid=17
q explica legal sobre eventos do swing dando uma olhada nela vc consegue entender melhor oq eu fiz ai. 
Valeu mesmo.
O último post não funfou. Mas o esquema do ALT + Tecla já funciona.
Vou quebrar o galho assim mesmo.
o utimo nao fncionou?
ue eu teste antes de manda
vc quer essa ação de aperta F10 em qual compoente nao e nao tela nao?
Eu testei em vários pontos do meu código.
E em nenhum lugar funcionou.
Como eu uso o NetBeans e crio a tela usando matisse, adicionei seu código no evento KeyPressed do jForm, jPanel e dos JTextField que são editáveis. E nada do negócio funcionar.
Se eu trocava o seu código por isso
jButtonImprimir.setMnemonic(KeyEvent.VK_P);
Apertando ALT+P funciona.
O ideal é não ter que usar o ALT pois nos sistemas legado da empresa o F10 por padrão salva, o F7 consulta e por aí vai. Queria seguir o padrão.
Eu ainda acho melhor usar actions… apesar que só o F10 ele não conseguiu executar a ação, só não entendi bem o porque disso, já que não deu erro e no menu aparece a tecla como aceleradora também… sei lá 
[code]package teste.guj;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
public class OiMundoAction extends AbstractAction {
private static final long serialVersionUID = 1L;
public OiMundoAction() {
super("Oi Mundo!");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control F10"));
}
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Oi Mundo!");
}
}
[/code]
[code]package teste.guj;
import java.awt.BorderLayout;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class OiMundoActionTeste extends JFrame {
private static final long serialVersionUID = 1L;
public OiMundoActionTeste() {
super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Action oiMundo;
oiMundo = new OiMundoAction();
JMenuBar bar = new JMenuBar();
JMenu menu = new JMenu("oi");
menu.add(new JMenuItem(oiMundo));
JButton button = new JButton(oiMundo);
getContentPane().add(bar, BorderLayout.NORTH);
bar.add(menu);
getContentPane().add(button, BorderLayout.CENTER);
pack();
}
public static void main(String[] args) {
new OiMundoActionTeste().setVisible(true);
}
}
[/code]
Vamos tenta de novo
[code]import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
public class TesteF10 extends JFrame{
public TesteF10(){
this.setBounds(100,100,100,100);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.addKeyListener(new KeyAdapter(){
public void keyReleased(KeyEvent e){
if(e.getKeyCode() == KeyEvent.VK_F10)
System.out.println("Tecla F10 precionada");
}
});
this.setVisible(true);
}
public static void main(String[] args) {
new TesteF10();
}
}
[/code]