Ducati: making mechanics out of riders since 1946
Ik denk dat je beter moet verwoorden wat jij bedoelt, want ik snap niet wat je bedoelt.
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
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.
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.
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
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