Identificerer en kaldende klasse i en metode i en anden klasse
Endnu en forvirrende overskrift fra mit skrivebord, but here's the deal:I mit program er jeg interesseret i at anvende java.util.Timer, hvilket er lykkedes i en klasse således:
(jeg laver en nested klasse RemindTask)
public void actionPerformed(ActionEvent e){
int delay = 3000;
jLabelBesked.setText("Ikke fundet");
timer.schedule(new RemindTask(),delay);
}
class RemindTask extends java.util.TimerTask {
public void run() {
jLabelBesked.setText("");
timer.cancel(); //Terminate the timer thread
}
}
Dette er ikke noget problem, da det hele foregår i samme klasse.
Mit problem er, at jeg ønsker at anvende denne timer funktionalitet i andre klasser ved at lave en statisk metode en klassen Tools.
Er det da muligt at lave en generel timer funktion, som er i stand til at udføre handlinger i den kaldende klasse??? Eksempelvis udføre setText(...) på en JLabel i den kaldende klasse?
Jeg har en idé om at det kan lade sig gøre på to måder
1: Hvis bare jeg er i stand til at identificere navnet på den klasse som kalder funktionen "run()" i Tools, vil jeg via if-sætninger kunne bestemme en given handling i den kaldende klasse (såfremt det altså er muligt at lave en setText(...) på en anden klasses JLabels)
2: Hvis run kunne alarmere/signalere den kaldende klasse når tiden var gået, så kan denne reagerer på dette signal.
Ideen med det hele er, at vise noget tekst (eksempelvis en fejlmeddelelse) for brugeren i 3 sekunder, hvorefter tekst fjernes igen ved at; setText(""), denne funktionalitet med en tidsforsinkelse vil jeg som sagt gerne gøre generel for hele programmet.
Jeg er ikke interesseret i at bruge Thread.sleep(3000), da denne fryser hele programmet (som jo kun kører en tråd).
Håber mit spørgsmål gav mening og er til at svare på!
På forhånd tak
/Swaq
