Acionar jbuton com tecla

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. :smiley:

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á :stuck_out_tongue:

[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]