Java - Como creo un evento propio ?

 
Vista:

Como creo un evento propio ?

Publicado por Fafastrungen (1 intervención) el 07/04/2008 18:41:29
Hola a todos, necesito generar un evento propio y no encuentro la forma.
Tengo una clase que se extiende de la clase Thread y en el metodo run tengo un contador que va desde 0 hasta 1.000.000. Lo que quiero que cuando llegue a 1.000 se puede invocar un evento.
Necesitaria esto:

[CODE]
// Clase que quiero que tenga un evento propio
public class MainThread extends Thread
{
// esto no se como se declara, pero doy la idea de lo que necesito
private Event OnMiEvento(int i);

public void run()
{
...
int i = 0;
while (true)
{
i = i + 1;
// ya se que es invalida la siguiente sintaxis, solo muestro lo que necesito
if (i == 1000) entonces ejectuar OnMiEvento( i );
if (i == 1000000) i = 0;
...
}
}
}

// Clase que instanciara la clase anterior
public class MainClass
{
MainThread mThread;

public void main(String args[])
{
mThread = new MainThread();
// Lo siguiente es lo que necesito
mThread.OnMiEvento = OnMiEvento(int i);
}

private void OnMiEvento(int i)
{
// aca se ejecuta lo que el usuario quiera como por ej.:
mainForm.setText ( i.toString() );
// donde i contiene el valor actual del contador del metodo run
}
}
[/CODE]

Esto es basicamente lo que necesito, estoy intentando hacerlo con los listeners pero no lo entiendo y no lo logro.

Gracias por adelantado.-
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

RE:Como creo un evento propio ?

Publicado por Gilberto (378 intervenciones) el 08/04/2008 02:01:17
import java.util.ArrayList;
public class MyThread extends Thread {

private long lapso;
private ArrayList <MyThreadListener>listeners;

public MyThread(long lp) {
lapso = lp;
listeners = new ArrayList<MyThreadListener>();
}

public void run() {
while(true){
try{
sleep(lapso);
notifyListeners();
}catch(Exception e) {
e.printStackTrace();
}
}
}

public void addMyThreadListener(MyThreadListener l) {
if(!listener.contains(l)) listeners.add(l);
}

private void notifyListener(MyThreadListener l) {
l.doTask();
}
public void notifyListeners() {
for(int i=0; i<listeners.size(); i++) {
MyThreadListener l = listeners.get(i);
notifyListener(l);
}
}

public interface MyThreadListener {
public void doTask();
}

public class TestMyThread implements MyThreadListener{

MyThread thread,

public TestMyThread() {
thread = new MyThread(1000);
thread.start();
}

public void doTask() {
System.out.println("Mi evento");
}

public static void main(String[] args) {
TestMyThread t = new TestMyThread();
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar