Avatar billede backupmand Nybegynder
24. januar 2005 - 11:31 Der er 10 kommentarer og
1 løsning

Rent teknisk vedr. java Events

Når man implementerer et interface i java - eks ActionListener, dikteres det, at man skal implementere de metoder, der findes i interfacet. Den metode, der findes i actionPerformed har et argument og dette er klassen ActionEvent.

For hvert tryk på eks. en JButton sker et event (hvis der er tilføjet en lytter) - dette kunne vel være et ActionEvent. Jeg forestiller mig, at ActionEvent klassens datafelter bliver opdateret, hvorefter actionPerformed(ActionEvent) kaldes, men hvorfra???? Grunden til at jeg er i tvivl er, at man kan jo ikke på forhånd vide hvad klassens navn er - den der tilføjer lytteren (via addActionListener(objektets navn))

Tak for svar.
Avatar billede arne_v Ekspert
24. januar 2005 - 12:02 #1
du tilføjer en action listener til et button, den gemmes i button objektet, når
du så klikker på button kaldes den gemte action listener med et event objekt
Avatar billede arne_v Ekspert
24. januar 2005 - 12:02 #2
den behøver ikke klassens navn - den har gemt en reference
Avatar billede backupmand Nybegynder
24. januar 2005 - 12:27 #3
Jeg forstår det stadig ikke. Lad os sige at vi har en klasse. Den klasse hedder Hej. Hej klassen implementerer interfacet ActionListener og dermed også metoden ActionPerformed(ActionEvent). Når jeg tilføjer actionListener(Hej) på button i klassen Hej, siger du at button invoker actionPerformed() ? Så er det Button der automatisk indeholder en reference til Hej, så actionPerformed(ActionEvent) kan kaldes?
Avatar billede arne_v Ekspert
24. januar 2005 - 12:36 #4
Du kalder

btn.addActionListener(this);

JButton må indeholde noget kode som (arves uden tvivl !):

private ActionListener action;
...
public addActionListener(ActionListener action) {
    this.action = action;
}

når så du klikker så kalder swing action.actionPerformed med et passende
konstrueret ActionEvent.
Avatar billede backupmand Nybegynder
24. januar 2005 - 12:45 #5
Ja det er dette "så kalder swing" som jeg interesserer mig for. Selve processen med
hvorfra ActionEvent bliver konstrueret, det må jo ske i den rækkefølger, at ActionEvent objektet konstrueres og dernæst kaldes actionPerformed .
Avatar billede arne_v Ekspert
24. januar 2005 - 12:48 #6
ja selvfølgelig
Avatar billede backupmand Nybegynder
24. januar 2005 - 12:49 #7
Jeg prøver nemlig selv at konstruere et flow der minder om dette, i egen applikation. Det har intet med buttons at gøre. Men jeg går vel ud fra, at jeg kan arbejde mig videre herfra. Så bare kast det berømte svar.
Avatar billede arne_v Ekspert
24. januar 2005 - 12:53 #8
Avatar billede arne_v Ekspert
24. januar 2005 - 12:53 #9
og et svar
Avatar billede backupmand Nybegynder
24. januar 2005 - 13:14 #10
Jeg burde nok granske nærmere.
Avatar billede backupmand Nybegynder
24. januar 2005 - 13:44 #11
Ahh. Jeg forstod det nu. Bedre sent end aldrig. Det minder mig lidt om delegates i C#.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester