[JAVA] Beste manier om events af te handelen

Pagina: 1
Acties:

  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Topicstarter
Ik ben bezig om een java database applicatie te maken met 1 main class. Daarnaast nog verschillende classe die allemaal een JPanel zijn. Nu kom ik steeds in de problemen met het afhandelen van de events.

Wat is hier de beste manier om de events af te handelen?

Ducati: making mechanics out of riders since 1946


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik denk dat je beter moet verwoorden wat jij bedoelt, want ik snap niet wat je bedoelt.

  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Topicstarter
Je hebt natuurlijk verschillende manieren om events af te handelen met een ActionListener. Is het nu verstandig om daar een aparte classe van te maken of is het beter om elke classe de ActionListener te laten erven....

Ducati: making mechanics out of riders since 1946


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je kan het op een paar manieren doen. Je zou bijvoorbeeld die panel een actionListener laten implementeren, maar uiteindelijk zul je dus een hele lading objecten (buttons ed) krijgen die hun events terecht zien komen bij die panel, en het is dan weer een heel karwei om terug te zoeken welke button het was, en dan pas kan je actie ondernemen. Daarom kan je beter een actionListener per button maken.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
public class EenPanel extends JPanel{

    public EenPanel(){
       ...
     okButton.addActionListener(new OkActionListener());
    }

    private class OkActionListener implements ActionListener{
     public void actionPerformed(ActionEvent ae){
        System.out.println("Ok");
     }
    }
}

Je zou nu zelf deze actionListener aan meerdere buttons kunnen plakken. Dit is bijvoorbeeld heel handig bij toolbars buttons, en menu items. je kan dan het volgende doen:

OkListener okListener = new OkListener();
okButton.addActionListener(okListener);
menuItem.addActionListener(okListener);


Maar er is nog een betere manier dan een actionListener. En dat is namelijk de Action class. Deze is een actionListener (dus hij kan alles wat een actionListener kan), maar hij kan nog meer. Je kan hem oa ook uitzetten.
code:
1
2
3
4
5
6
7
8
9
private OkAction extends AbstractAction{
    public OkAction(){
        super("Ok");
    }

    public void actionPerformed(ActionEvent ae){
        System.out.prinltn();
    }
}

Deze zou je ook als interne class kunnen opnemen omdat je buiten die panel er niet echt in geinreresseerd bent. Maar er zijn ook wel andere manieren om ermee te werken. Je zou ook een bak kunnen maken waar je een hele lading acties ingooid, en dan maak je een gui die gewoon een actie uit die bak vist. Je kan een actie op de volgende manier aansluiten.

JButton okButton = new JButton(new OkAction());

maar het kan ook zo.

JButton okButtn = new JButton();
okButton.setAction(new OkAction());

Volgens mij heb je nu wel genoeg info om weer verder te komen