Uso del KeyListener

Iniciado por m@o_614, 27 Agosto 2015, 22:50 PM

0 Miembros y 1 Visitante están viendo este tema.

m@o_614

Saludos, tengo el siguiente código el cuál me imprime el ID y el tiempo de duración de X número de procesos. El problema es que tengo que agregarle un evento de teclado, una vez que está corriendo el programa, si yo oprimo la tecla E me tiene que salir un mensaje de error y continuar con la ejecucion de procesos, y si oprimo la tecla S la ejecucion para por completo. Busqué información de keyListener y trate de agregarle el evento de teclado como pude, pero no funciona correctamente y no sé que estoy haciendo mal

Código (java) [Seleccionar]
import java.awt.*;
import java.awt.event.*;
import java.util.Random;

import javax.swing.*;

class Hilo extends Thread{
private boolean puedeImprimir;
private int ID,numeroCanicas,Tiempo;
private JTextArea areaTexto;
private JTextField campoTexto;

public Hilo(JTextArea areaTextox,int numeroCanicasx)
{
areaTexto = areaTextox;
puedeImprimir = true;
numeroCanicas = numeroCanicasx;
ID = 1;
}

public void letraOprimida(KeyEvent e)
{
if(e.getKeyCode() == 69)
       System.out.println("Error de");
if(e.getKeyCode() == 83)
   puedeImprimir = false;
}

public void run()
{
    Random t = new Random();
for(int i = 0;i < numeroCanicas;i++)
{
    try
    {
Tiempo = (int)(t.nextDouble() * 5 + 1);
this.imprimirDatos(Tiempo,ID);
Tiempo*=1000;
Thread.sleep(Tiempo);
this.ID++;
    }
    catch(InterruptedException e)
    {
    e.printStackTrace();
    }
}
}

public void imprimirDatos(int Tiempo,int ID)
{
String tiempo,id;
tiempo = Integer.toString(Tiempo);
id = Integer.toString(ID);
areaTexto.append("ID:        "+id+"\tTiempo:        "+tiempo+"\n");
}
}

class Interfaz extends JFrame implements KeyListener{
private JTextArea areaTexto;
private JLabel etiqueta;
private int numeroCanicas;
private Random n = new Random();
private Hilo hilo;

public Interfaz()
{
numeroCanicas = (int)(n.nextDouble() * 10 + 1);
System.out.println(""+numeroCanicas);
areaTexto = new JTextArea(20,18);
etiqueta = new JLabel("Número Canicas : "+numeroCanicas);
etiqueta.setBounds(10, 11, 96, 14);
this.getContentPane().add(areaTexto,BorderLayout.EAST);
this.getContentPane().add(etiqueta,BorderLayout.NORTH);
hilo = new Hilo(areaTexto,numeroCanicas);

hilo.start();
addKeyListener(this);
}

public void keyTyped(KeyEvent e) {
hilo.letraOprimida(e);
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent arg0) {
}
}

public class Canicas {

public static void main(String[] args) {
Interfaz interfaz = new Interfaz();
interfaz.setTitle("Canicas");
interfaz.setBounds(200, 200, 300, 300);
interfaz.setVisible(true);
}
}


de antemano gracias