Executar função ao apertar tecla F1,F2,F3....

Java

28/07/2013

Tenho um sistema de vendas e queria fazer com que ao apertar uma tecla por exemplo F1 ele executa uma determinada função
como faço?
Paulo Sérgio

Paulo Sérgio

Curtidas 0

Respostas

ândrei Mesquita

ândrei Mesquita

28/07/2013

Você deve adicionar um evento KeyListener na sua janela e, no método "keyPressed(KeyEvent arg0)" você determina, por meio de uma estrutura de teste, o que acontecerá quando o parâmetro recebido for igual a tecla F1,F2, F3 ou qualquer outra tecla por meio do seu código (getKeyCode()). Os códigos podem ser encontrados na classe KeyEvent. Abaixo, um código com mais detalhes.
CÓDIGO DO KEYLISTENER
	private class LeitorTeclas implements KeyListener
	{
		@Override
		public void keyPressed(KeyEvent arg0) 
		{
			switch(arg0.getKeyCode())
			{
			case(KeyEvent.VK_F1):
				System.out.println("Você pressionou a tecla F1");
				break;
			case(KeyEvent.VK_F2):
				System.out.println("Você pressionou a tecla F2");
				break;
			case(KeyEvent.VK_F3):
                                System.out.println("Você pressionou a tecla F3");
				break;
			}
                        System.out.println("Código da tecla: " + arg0.getKeyCode());
		}

		@Override
		public void keyReleased(KeyEvent arg0) 
		{
			
		}

		@Override
		public void keyTyped(KeyEvent arg0) 
		{
			
		}
	}

CÓDIGO DA JANELA
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Janela extends JFrame
{
	public Janela()
	{
		super("TESTE");
		setSize(300,300);
		addKeyListener(new LeitorTeclas());
		// Se você não deixar a janela selecionável, ela não 
		// fará os eventos relacionados a ela, ocorrerem
		setFocusable(true);
		setVisible(true);
	}
	
	public static void main(String [] args)
	{
		SwingUtilities.invokeLater
		(
			new Runnable()
			{
				@Override
				public void run() 
				{
					new Janela();
				}
			}
		);
	}
}

Obs.: Não se esqueça de usar o "setFocusable(true)" nos componentes em que você quiser adicionar os eventos, senão eles não responderão quando você pressionar as teclas.

Espero ter ajudado!
GOSTEI 0
Paulo Sérgio

Paulo Sérgio

28/07/2013

Muito obrigado, era isso mesmo que estava precisando :)
Muito obrigado pela atenção

Você deve adicionar um evento KeyListener na sua janela e, no método "keyPressed(KeyEvent arg0)" você determina, por meio de uma estrutura de teste, o que acontecerá quando o parâmetro recebido for igual a tecla F1,F2, F3 ou qualquer outra tecla por meio do seu código (getKeyCode()). Os códigos podem ser encontrados na classe KeyEvent. Abaixo, um código com mais detalhes.
CÓDIGO DO KEYLISTENER
	private class LeitorTeclas implements KeyListener
	{
		@Override
		public void keyPressed(KeyEvent arg0) 
		{
			switch(arg0.getKeyCode())
			{
			case(KeyEvent.VK_F1):
				System.out.println("Você pressionou a tecla F1");
				break;
			case(KeyEvent.VK_F2):
				System.out.println("Você pressionou a tecla F2");
				break;
			case(KeyEvent.VK_F3):
                                System.out.println("Você pressionou a tecla F3");
				break;
			}
                        System.out.println("Código da tecla: " + arg0.getKeyCode());
		}

		@Override
		public void keyReleased(KeyEvent arg0) 
		{
			
		}

		@Override
		public void keyTyped(KeyEvent arg0) 
		{
			
		}
	}

CÓDIGO DA JANELA
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Janela extends JFrame
{
	public Janela()
	{
		super("TESTE");
		setSize(300,300);
		addKeyListener(new LeitorTeclas());
		// Se você não deixar a janela selecionável, ela não 
		// fará os eventos relacionados a ela, ocorrerem
		setFocusable(true);
		setVisible(true);
	}
	
	public static void main(String [] args)
	{
		SwingUtilities.invokeLater
		(
			new Runnable()
			{
				@Override
				public void run() 
				{
					new Janela();
				}
			}
		);
	}
}

Obs.: Não se esqueça de usar o "setFocusable(true)" nos componentes em que você quiser adicionar os eventos, senão eles não responderão quando você pressionar as teclas.

Espero ter ajudado!
GOSTEI 0
POSTAR