dos simples clases:
PulsarTeclas.java
Panel.java
PulsarTeclas.java
Código PHP:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class PulsarTeclas extends JFrame implements KeyListener
{
Panel pnl;
JLabel lb;
public PulsarTeclas()
{
this.setVisible(true);
this.setSize(400,300);
this.setTitle("KeyListener como opciones");
this.setLayout(null);
this.addKeyListener(this);
this.setLocation(300, 200);
pnl = new Panel();
lb = new JLabel("Dibujar: C-Circulo, R-Rectangulo");
pnl.setLayout(null);
pnl.setBounds(10, 50, 365, 205);
lb.setBounds(10, 10, 200, 30);
pnl.setBackground(Color.white);
add(pnl);
add(lb);
}
public void keyTyped(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
}
public void keyPressed(KeyEvent e)
{
int tecla = e.getKeyCode();
if(tecla == 67)//la tecla fue la 'C'???
{
pnl.darValor(1);
}
else if(tecla == 82)//la tecla fue la 'R'???
{
pnl.darValor(2);
}
else pnl.darValor(0);//<---cualquier tecla
}
public static void main(String[] args)
{
PulsarTeclas frm = new PulsarTeclas();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
y creo una instancia de Panel (que es la clase del archivo Panel.java) es donde dibujo un circulo si se presiona la tecla 'C'
o un rectangulo si se presiona la tecla 'R'
en el método keyPressed veo qué tecla se presionó y guardo el código ASCII de ésta en la variable 'tecla'
luego solo comparo para hacer la restricción (saber que hago dependiendo la tecla presionada)
y envio un valor a un metodo (darValor(int m) ) que está en Panel.java
(1 si fué la tecla 'C' o 2 si fué la tecla 'R' o 0 si fué otra tecla)
y Panel.java
Código PHP:
import java.awt.*;
import javax.swing.*;
public class Panel extends JPanel
{
int dibujar = -1;//solo para dejar un valor por defecto
public Panel()
{}
public void darValor(int m)
{
this.mover = m;
repaint();
}
public void paint(Graphics g)
{
Dimension tam = this.getSize();
g.setColor(Color.WHITE);
g.fillRect(0,0,tam.width,tam.height);
g.setColor(Color.BLACK);
if(dibujar == 0)
{
g.drawString("Tecla Equivocada!!!", 115, 50);
}
else if(dibujar==1)
{
g.drawOval(80,0,200,200);
}
else if(dibujar==2)
g.drawRect(75,0,210,200);
}
}
darValor(int m) le da el valor a una variable global 'dibujar' que es la que me indica la figura que se va a dibujar
0 -> texto 'Tecla equivocada'
1 -> Circulo
2 -> Rectangulo
y manda la orden de repintar (repaint()) la cual va al metodo paint(Graphics g)
(esto es por que ese metodo es reservado por Java por eso la llamada a éste no se hace como de costumbre)
éste metodo paint dibuja un cuadro blanco y despues la figura que 'dibujar' le diga (circulo..bla bla .......)
y listo, si miran detenidamente el código se darán cuenta que es muy facil.
cualquier duda no duden en hacerla.....
muchos exitos....