Java - Threads y Jpanel

 
Vista:

Threads y Jpanel

Publicado por Juan Carlos (4 intervenciones) el 15/11/2011 18:26:33
Buenas...tengo que decir que la solución que me diste no fue directamente la que necesitaba pero si provocó que me diera cuenta de lo que de verdad tenía que usar. En este caso se me ha solventado gran parte del problema con una clase interna Thread que maneja el dibujo sobre el panel. El problema viene a la hora de pausar y reanudar el dibujo.

areaResultados1
es una clase interna extendida a JPanel
play1pulsado atributo global q dice si se pulso el PLAY
listaPuntos1.size()>nPuntos1 marca si se ha pasado del numero de puntos que puede dibujar
class Hilo extends Thread{

public void run(){
while(true){
try{
Thread.sleep(100);//se espera 0.1 segundos
}catch (InterruptedException e) { }
if ((play1pulsado) && (listaPuntos1.size()>nPuntos1)){
areaResultados1.repaint();
nPuntos1++;
}
......
}
}
}


private void play1_1ActionPerformed(java.awt.event.ActionEvent evt) {
if (est_din){//estatico
.....
}
else{//dinamico
String botonText = null;
botonText = play1_1.getText();

if ( ("Play".equals(botonText)) || ("Empezar".equals(botonText)) ){
if ("Play".equals(botonText)){
play1_1.setText("Pause");
}
if ("Empezar".equals(botonText)){
play1_1.setText("Pausa");
}

if (!play1pulsado){ // se empieza inicialmente el calculo y dibujo
play1pulsado = true;
leerParametros(o1,1); //lee parametros
listaPuntos1 = o1.getArrayPuntos(); // lista de puntos
Hilo thO1 = new Hilo();
thO1.start();
}
else{ // se reanuda el dibujo de puntos
thO1.resume();
}
}
else if ( ("Pause".equals(botonText)) || ("Pausa".equals(botonText)) ){ // se pausa el dibujo de puntos
if ("Pausa".equals(botonText)){
play1_1.setText("Empezar");
}
if ("Pause".equals(botonText)){
play1_1.setText("Play");
}
thO1.interrupt();
}
}

}

El problema recae aqui cuando vuelvo a pulsar el boton de PLAY para pausar salta una interrupcion de las chungas con interrupt y wait. Con yield no salta nada, pero no para la ejecucion. Muchas gracias si puedes aportar algo ;)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder