Código
{ Nodo enEjecucion; private Hilo2 hilo2; private static final int CANICAS_X_LOTE = 5; private boolean puedeImprimir = true,sinPulsar = true; private static LinkedList<Nodo> listos = new LinkedList<Nodo>(); private int numeroCanicas,id = 1; public Hilo(int numero,JTextArea a1,JTextArea a2,JTextArea a3,JTextField campoTeclax,JTextArea bloqueados) { numeroCanicas = numero; areaTexto1 = a1; areaTexto2 = a2; areaTexto3 = a3; areaBloqueados = bloqueados; campoTeclaPulsada = campoTeclax; campoTeclaPulsada.addKeyListener(this); } public void run() { for(int i = 1;i <= CANICAS_X_LOTE;i++) agregarCanica(); ejecutar(); } public void agregarCanica() { Nodo nodo = new Nodo(); nodo.ID = id; nodo.Tiempo = (int)(t.nextDouble() * 5 + 1); nodo.tipoCanica = elegirTipoCanica(); listos.add(nodo); id++; } public void ejecutar() { long tiempo; while(!listos.isEmpty() && puedeImprimir) { imprimirListos(); try { enEjecucion = listos.removeFirst(); areaTexto1.setText(null); if(id <= numeroCanicas) agregarCanica(); imprimirListos(); areaTexto2.append("ID: "+enEjecucion.ID+"\nTiempo: "+enEjecucion.Tiempo+"\nTipo: "+enEjecucion.tipoCanica+"\n\n"); tiempo = (enEjecucion.Tiempo)*1000; areaTexto2.setText(null); if(sinPulsar) areaTexto3.append("ID: "+enEjecucion.ID+" Tiempo: "+enEjecucion.Tiempo+" Tipo: "+enEjecucion.tipoCanica+"\n"); } e.printStackTrace(); } } areaTexto2.setText(null); } public void imprimirListos() { Iterator<Nodo> it = listos.iterator(); while(it.hasNext()) { Nodo canica = (Nodo)it.next(); areaTexto1.append("Canica: "+canica.ID+"\tTiempo: "+canica.Tiempo+"\n"); } areaTexto1.append("\n"); } { int indice; String tipo[] = {"Ojo de gato","Transparente","Bolones","Trebol","Agatas","Vergel","Onix","Piojines","Tirito","Japonesa"}; indice = (int)(n.nextDouble() * 9 + 0); return tipo[indice]; } { hilo2 = new Hilo2(areaBloqueados,enEjecucion); hilo2.start(); } }
El problema que tengo es que tengo que utilizar un evento de boton, una vez que oprima el boton se tiene que bloquear el proceso que se esta imprimiendo, yo por eso cree otro hilo al que le paso el JTextArea donde se va a imprimir el proceso bloqueado y el proceso.
Código
private long espera; private Nodo bloqueado; { bloqueado = enEjecucion; } public void run() { try { bloqueado.Tiempo = (int)(t.nextDouble()* 7 + 5); espera = (bloqueado.Tiempo)*1000; areaBloqueados.append("ID: "+bloqueado.ID+" Espera: "+bloqueado.Tiempo+" Tipo: "+bloqueado.tipoCanica+"\n"); } } }
pero me lanza un error una vez que el hilo2 se ejecuta y no se cual es el problema
de antemano gracias