问题
I am learning Java and would really like to have a deeper understanding of what the ActionEvent e perameter means and stands for. When I code I don't just want to spit out lines that work, but I don't understand. I want to have a full understanding of concepts before I use them.
So what specifically is it asking for and what do the two parts(ActionEvent and e) mean?
class ButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
}
}
Thanks.
回答1:
ActionEvent
is a class, e
is an instance of that class. You can use e to call it's methods/properties, found here
http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionEvent.html
ActionEvent
is just a type, it informs you what type of object e
is. By the way, you can change e
to whatever you prefer, for ex. event
or object
.
ActionEvent event
, ActionEvent object
(remember, not to be confused with Object
, its object with lower case "o"), ActionEvent anyVariableName
etc...
Then inside actionPerformed()
you can call stuff like event.doSomething();
回答2:
The ActionEvent
is an "event" that your listener catches, as sent by a dispatcher. This mean, in layman's terms, that some thread somewhere has decided that your actions (i.e. clicking a button, etc.) have caused an action to occur, and informs the System. Your listener picks up on this, and takes a reference as the parameter e
. This may help to shed a bit more light on what/why the action is; and, it may be beneficial to check out the Event Dispatch Thread (EDT).
回答3:
This should help you: http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html
Basically,ButtonListener is your ActionListener Implementation. You will use it like
someButton1.addActionListener(new ButtonListener());
someButton2.addActionListener(new ButtonListener());
It will listen for any action events on the buttons 'someButton1' and 'someButton2'.But we might want to handle clicks on both buttons in a different way. Thats when ActionEvent is of use.
Inside method,we can do this by following
@Override
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("Button 1")){
//Process Button 1 action event here
}
else if(e.getActionCommand().equals("Button 2")){
//Process Button 2 action event here
}
}
来源:https://stackoverflow.com/questions/31216051/what-does-actionevent-e-mean