/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
"Rigtig" implementering af listner til fx ~
Fra : Flare


Dato : 24-03-03 23:24

Når jeg skal lave listnere til fx. knapper har jeg tit tænkt over hvilken
metode af nedenstående der er den mest "rigtige" eller hensigstmæssige.

Kan nogen fortælle mig jeres erfaring?

============
AddButton.addActionListener(new AddButton());
SubButton.addActionListener(new SubButton());

class AddButton implements ActionListener{

public void actionPerformed(ActionEvent e){
//lav noget
}
}

class SubButton implements ActionListener{

public void actionPerformed(ActionEvent e){
//lav noget
}
}

===========
AddButton.addActionListener(this);
SubButton.addActionListener(this);

public void actionPerformed(ActionEvent e){

if (e.getSource() == AddButton)
//Lav noget

if (e.getSource() == SubButton)
//Lav noget
}


pfh
TAK
--
----------------------------------------
Anders Jacobsen 2003 @ www.pings.dk



 
 
Lars Dam (25-03-2003)
Kommentar
Fra : Lars Dam


Dato : 25-03-03 00:13

On Mon, 24 Mar 2003 23:23:33 +0100
"Flare" <dct_flare@hotmail.com> wrote:

> Når jeg skal lave listnere til fx. knapper har jeg tit tænkt over hvilken
> metode af nedenstående der er den mest "rigtige" eller hensigstmæssige.
>
> Kan nogen fortælle mig jeres erfaring?
>
> ============
> AddButton.addActionListener(new AddButton());
> SubButton.addActionListener(new SubButton());
>
> class AddButton implements ActionListener{
>
> public void actionPerformed(ActionEvent e){
> //lav noget
> }
> }
>
> class SubButton implements ActionListener{
>
> public void actionPerformed(ActionEvent e){
> //lav noget
> }
> }
>
> ===========
> AddButton.addActionListener(this);
> SubButton.addActionListener(this);
>
> public void actionPerformed(ActionEvent e){
>
> if (e.getSource() == AddButton)
> //Lav noget
>
> if (e.getSource() == SubButton)
> //Lav noget
> }


Eller hvad med:

button.addActionListener( new ActionListener(){
   public void actionPerformed(ActionEvent e){
      ...
   }
});

Eller:

ActionListener button1Action = new ActionListener(){
   public void actionPerformed(ActionEvent e){
      ...
   }
};
:
button1.addActionListener(button1Action)
:

>
>
> pfh

Alle sammen er lige lovlige. Personligt er jeg begyndt at bruge den sidste med en AbstractAction istedet for ActionListener, hvor jeg har en instans pr. action type. Denne har fordelen af at instansen af action'en kan genbruges flere steder (menu, buttons, shortcuts), og at hver action kun udfører een funktion. Det betyder at man ikke har en 'switch' konstruktion (som i dit andet forslag) hvor man skal kalde en metode. 'Metoden' er actionen; og 'metoden' bruges kun der hvor den kan fyres afsted.

Men som alting er; så kræver hver sin situation at man vurderer den og vælger den løsning der passer bedst. Eller med andre ord, så det jeg lige skrev gælder meget fint i bruger input situationer (actions på komponenter som brugeren initierer), mens at en anonym implementering andre steder er mere passende (f.eks. en speciel klasse som bruger en timer).

> TAK
> --
> ----------------------------------------
> Anders Jacobsen 2003 @ www.pings.dk

vh.ld

Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408509
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste