Combinaçao de atalhos

9 respostas
furacao123

preciso fazer algumas combinaçoes de atalhos no meu formulario…por exemplo quando der um crl+N aperta o botao Novo…mas o problema é que só consigo colocar uma tecla de atalho sem a combinaçao…no maximo funciona com o ALT + Tecla

como faço para criar esses atalhos com combinação de teclas??

9 Respostas

M

Se seu evento estiver em um Action ou em um JMenuItem, basta usar o método setAccelerator passando um KeyStroke.getKeyStroke() como argumento.

furacao123

eu estou usando o netbeans e a combinaçao de atalho que eu quero chamar eh um JButton

eu consigo setar pelo netbeans a tecla N no minemonic…mas dae fica por padrao ALT + N

eu queria fazer o atalho igual em menus

M

OK… essa sequência de atalhos pode ser feita por um Action. Veja um exemplo:

// supondo que neu botão se chame botaoNovo
botaoNovo = new JButton();
botaoNovo.setText("Novo");
botaoNovo.setAction(getNovoAction());
// ..... use o método:
private AbstractAction getNovoAction() {
	AbstractAction novoAction = new AbstractAction("Novo", null) {
		private static final long serialVersionUID = 1L;
		@Override
		public void actionPerformed(final ActionEvent evt) {
				// fazer algo aqui!!!
		}
	};
	novoAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("")); // TODO esse é o atalho!!!
	return novoAction;
}
furacao123

me explica melhor esse metodo putValue???

estou tendo problema em nao axar o action.ACELERATOR_KEY

meu código ficou assim para a combinação CRTL + N

novoAction.putValue(Action.ACELERATOR_KEY, KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK)); // TODO esse é o atalho!!!
M

furacao123:
me explica melhor esse metodo putValue???

estou tendo problema em nao axar o action.ACELERATOR_KEY

meu código ficou assim para a combinação CRTL + N

novoAction.putValue(Action.ACELERATOR_KEY, KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK)); // TODO esse é o atalho!!!

O putValue insere uma determinada característica a um Action. No caso, a característica é Action.ACELERATOR_KEY (certifique-se de importar a interface javax.swing.Action!!!) e o valor dessa caracterítica é o KeyStroke que nada mais é que um atalho do teclado. Será que deu pra entender?

Lavieri

se vc esta usando Netbeans, é + simples que imagina ^^ …

importe o pacote org.jdesktop

clique com o direito do mouse sobre o JButton que vc ker por o atalho… e selecione Definir Ação…

la vai ter… acelerador… marque os atalhos que deseja (ctrl, alt, shif) e escolha a tecla ^^

algo + ou - assim

furacao123

mas onde eu encontro esse jdesktop??

no meu netbeans nao possui…e quando clico no botao nao tenho a opçao de definir ação

agora sobre o outro exemplo eu intendi o meu problema era o import o netbeans estava importanto um pacote awt e nao swing por isso nao encontrava

agora vou tentar jogar uma combinaçao de atalho no keyStroke, pois dessa maneira q eu tinha colocado nao funcionou

novoAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.SHIFT_MASK)); return novoAction;

Lavieri

furacao123:
mas onde eu encontro esse jdesktop??

no meu netbeans nao possui…e quando clico no botao nao tenho a opçao de definir ação

agora sobre o outro exemplo eu intendi o meu problema era o import o netbeans estava importanto um pacote awt e nao swing por isso nao encontrava

agora vou tentar jogar uma combinaçao de atalho no keyStroke, pois dessa maneira q eu tinha colocado nao funcionou

novoAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.SHIFT_MASK)); return novoAction;

tem sim ^^

clica com o direito em em bibliotecas e escolhe adcionar bibliotecas, ai vai ta la, Swing Application Framework

furacao123

mesmo dando esses dois imports

import org.jdesktop.application.*; import org.jdesktop.swingworker.*;

ainda nao me apareceu a opcao de adicionar ação

Criado 13 de fevereiro de 2009
Ultima resposta 18 de fev. de 2009
Respostas 9
Participantes 3