Accelerators em botoes

6 respostas
H

ola a todos
estou tendo problemas com os accelerators nos botoes (nao sao do menu)
eu soh tenho acesso a eles atraves do ALT, sendo q queria utilizar ctrl
estou utilizando o seguinte codigo:

putValue(MNEMONIC_KEY, new Integer(keyEvent));
		putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(keyEvent, keyMask));

sendo keyEvent -> KeyEvent.VK_S, e keyMask -> InputEvent.CTRL_MASK

alguem tem alguma ideia?
obrigado

6 Respostas

davidbuzatto

Um JButton?

Vc vai precisar utilizar um keylistener

seuButton.addKeyListener( new KeyListener() { public void keyPressed( KeyEvent e ) { if ( e.getKeyCode() == KeyEvent.CTRL && e.getKeyCode() == VK.A ) { System.out.println( "sweu codigo aki"); } } } );

Da uma fucada, num tenho certeza c vai funcionar pq to numa lanhouse. Dauma estudada em KeyListener e KeyEvent q vc vai encontrar o q precisa.

Falow!

H

obrigado :slight_smile: vou dar umas testadas aqui…
mas eh ctz q nao tem como utilizar accelerators nos botoes?
novamente obrigado

davidbuzatto

Tenho sim.

O código que postei ta errado no if, use isso aqui…

if ( e.getKeyCode() == KeyEvent.A && e.isControlDown() ) { . . . }

Falow!

H

brigadao velho :slight_smile:

dudaskank
hooligan:
obrigado :) vou dar umas testadas aqui.. mas eh ctz q nao tem como utilizar accelerators nos botoes? novamente obrigado

Opa, tem sim. Bom, eu sei fazer usando javax.swing.Action e AbstractAction:

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!");
	}
}

Você cria então seu botão assim:

Action oiMundo;
		oiMundo = new OiMundoAction();
		JButton button = new JButton(oiMundo);

O bom das actions é que vc pode reaproveitar para colocar isso em menus e outros botões facilmente... inclusive se colocar isso num JMenuItem aparece do lado o atalho pra ele: Ctrl + F10

Espero que ajude, flw

H

brigadao gente :slight_smile: vou fazer os testes aqui, realmente o sistema eh bem grande e fica mais facil com actions
valews povo

Criado 14 de julho de 2006
Ultima resposta 17 de jul. de 2006
Respostas 6
Participantes 3