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