[Java][API]Action Listener

Document Reference By:
https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

 The Action Listener API


The ActionListener Interface

Because ActionListener has only one method, it has no corresponding adapter class.

MethodPurpose
actionPerformed(actionEvent)Called just after the user performs an action.


The ActionEvent Class

MethodPurpose
String getActionCommand()Returns the string associated with this action. Most objects that can fire action events support a method called setActionCommand that lets you set this string.
int getModifiers()Returns an integer representing the modifier keys the user was pressing when the action event occurred. You can use the ActionEvent-defined constants SHIFT_MASK, CTRL_MASK, META_MASK, and ALT_MASK to determine which keys were pressed. For example, if the user Shift-selects a menu item, then the following expression is nonzero:

actionEvent.getModifiers() & ActionEvent.SHIFT_MASK

Object getSource()
(in java.util.EventObject)
Returns the object that fired the event.


Action listeners are probably the easiest — and most common — event handlers to implement. You implement an action listener to define what should be done when an user performs certain operation.

An action event occurs, whenever an action is performed by the user. Examples: When the user clicks a button, chooses a menu item, presses Enter in a text field. The result is that an actionPerformed message is sent to all action listeners that are registered on the relevant component.

To write an Action Listener, follow the steps given below:

  1. Declare an event handler class and specify that the class either implements an ActionListener interface or extends a class that implements an ActionListener interface. For example:

    public class MyClass implements ActionListener { 


  2. Register an instance of the event handler class as a listener on one or more components. For example:

    someComponent.addActionListener(instanceOfMyClass);


  3. Include code that implements the methods in listener interface. For example:

    public void actionPerformed(ActionEvent e) { 
     ...//code that reacts to the action... 
    }





    Example:     AL.java

    Let us write a simple program which displays how many number of times a button is clicked by the user. First, here is the code that sets up the TextField , button and numClicks variable:

    public class AL extends Frame implements WindowListener,ActionListener {
    TextField text = new TextField(20);
    Button b;
    private int numClicks = 0;


    In the above example, the event handler class is AL which implements ActionListener.

    We would like to handle the button-click event, so we add an action listener to the button b as below:

    b = new Button("Click me");
    b.addActionListener(this); 


    In the above code, Button b is a component upon which an instance of event handler class AL is registered.

    Now, we want to display the text as to how many number of times a user clicked button. We can do this by writing the code as below:

    public void actionPerformed(ActionEvent e) {
             numClicks++;
             text.setText("Button Clicked " + numClicks + " times");


    Now, when the user clicks the Button b, the button fires an action event which invokes the action listener's actionPerformed method. Each time the user presses the button, numClicks variable is appended and the message is displayed in the text field.

    Here is the complete program(AL.java):

    import java.awt.*;
    import java.awt.event.*;
    
    public class AL extends Frame implements WindowListener,ActionListener {
            TextField text = new TextField(20);
            Button b;
            private int numClicks = 0;
    
            public static void main(String[] args) {
                    AL myWindow = new AL("My first window");
                    myWindow.setSize(350,100);
                    myWindow.setVisible(true);
            }
    
            public AL(String title) {
    
                    super(title);
                    setLayout(new FlowLayout());
                    addWindowListener(this);
                    b = new Button("Click me");
                    add(b);
                    add(text);
                    b.addActionListener(this);
            }
    
            public void actionPerformed(ActionEvent e) {
                    numClicks++;
                    text.setText("Button Clicked " + numClicks + " times");
            }
    
            public void windowClosing(WindowEvent e) {
                    dispose();
                    System.exit(0);
            }
    
            public void windowOpened(WindowEvent e) {}
            public void windowActivated(WindowEvent e) {}
            public void windowIconified(WindowEvent e) {}
            public void windowDeiconified(WindowEvent e) {}
            public void windowDeactivated(WindowEvent e) {}
            public void windowClosed(WindowEvent e) {}
    
    }
     
     
    
    

留言

這個網誌中的熱門文章

[Excel]國曆轉農曆VBA

「CSS」「div區塊介紹」 三欄式網頁排版設計

「Java」「For迴圈」 三角形