Java NetBeans calls ActionListener with another

I am learning Java with GUI using JFrame, I would like to get help regarding calling ActionListener using ActionListener. Here are some of my codes. There are two action listeners at the bottom, and I added a simple comment for easy understanding.

package onlinedelivery;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MainMenu extends JFrame {
    public JButton mainMenuButton;
    public JButton exitButton;
    public MainMenuButtonHandler mmHandler;
    public ExitButtonHandler exHandler;
    public static final int width = 400;
    public static final int heigth = 300;

public MainMenu() {
    Font bigFont = new Font("Arial",Font.BOLD,12);

    mainMenuButton = new JButton("Main Menu");
    mmHandler = new MainMenuButtonHandler();
    mainMenuButton.addActionListener(mmHandler);

    exitButton = new JButton("Exit");
    exHandler = new ExitButtonHandler();
    exitButton.addActionListener(exHandler);

    setTitle("Main Menu");

    Container pane = getContentPane();

    pane.setLayout(new GridLayout(5,2));

    pane.add(mainMenuButton);

    setSize(WIDTH,HEIGHT);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public class MainMenuButtonHandler implements ActionListener {
    @Override public void actionPerformed(ActionEvent e) {
        // ExitButtonHandler should be called here
        // When I click Main Menu Button Handler, ExitButtonHandler shall perform
    }
}

public class ExitButtonHandler implements ActionListener {      
    @Override public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    }
}
+4
source share
2 answers

You can use the doClick () method in JButton (inherited from AbstractButton)

With this, change the Handler MainMenuButton class as follows:

public class MainMenuButtonHandler implements ActionListener {

    private JButton exitButton;

    public void setExitButton(JButton exitButton){
        this.exitButton = exitButton;
    }

    @Override public void actionPerformed(ActionEvent e) {
        //Do your work and invoke Click of exitButton
        this.exitButton.doClick();
    }
}

Also MainMenu ():

exitButton = new JButton("Exit");
exHandler = new ExitButtonHandler();
exitButton.addActionListener(exHandler);

mainMenuButton = new JButton("Main Menu");
mmHandler = new MainMenuButtonHandler();
mmHandler.setExitButton(exitButton) // newly added
mainMenuButton.addActionListener(mmHandler);
0
source

, , .

public class MainMenuButtonHandler extends ExitButtonHandler  {
    @Override public void actionPerformed(ActionEvent e) {
        // An additional logic here
        super.actionPerformed(e);
    }
}
+1

Source: https://habr.com/ru/post/1676891/


All Articles