Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use an action listener to check if a certain button was clicked?

I have 4 lists of buttons arranged into a column in my program. As of now I have 4 loops that check to see if a button has been clicked or not. Is there a simple way to check if any button has been clicked instead of looping through each list to see if that certain button was clicked. There must be an easier way to check if "actionSource == anybutton"...

like image 295
mbreen Avatar asked Sep 04 '11 15:09

mbreen


People also ask

How do you check if a button has been clicked in Java?

We create a method actionPerformed, which in its parameter contains the ActionEvent class. If the source of the action created is equal to button1, then we change the text of the button to, "The button has been clicked". And this is all that is required to check if a button is clicked using Java.

What is use of getSource () method?

The getSource method is used in the actionPerformed method to determine which button was clicked.

What method invoke when user clicks on a button or menu item?

The Java ActionListener is notified whenever you click on the button or menu item.


1 Answers

Use anonymous inner classes for each button:

JButton button = new JButton("Do Something");
button.addActionListener( new ActionListener()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        System.out.println("Do Something Clicked");
    }
});

Or if your logic is related, then you can share a listener:

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

public class ButtonCalculator extends JFrame implements ActionListener
{
    private JButton[] buttons;
    private JTextField display;

    public ButtonCalculator()
    {
        display = new JTextField();
        display.setEditable( false );
        display.setHorizontalAlignment(JTextField.RIGHT);

        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout( new GridLayout(0, 5) );
        buttons = new JButton[10];

        for (int i = 0; i < buttons.length; i++)
        {
            String text = String.valueOf(i);
            JButton button = new JButton( text );
            button.addActionListener( this );
            button.setMnemonic( text.charAt(0) );
            buttons[i] = button;
            buttonPanel.add( button );
        }

        getContentPane().add(display, BorderLayout.NORTH);
        getContentPane().add(buttonPanel, BorderLayout.SOUTH);
        setResizable( false );
    }

    public void actionPerformed(ActionEvent e)
    {
        JButton source = (JButton)e.getSource();
        display.replaceSelection( source.getActionCommand() );
    }

    public static void main(String[] args)
    {
        UIManager.put("Button.margin", new Insets(10, 10, 10, 10) );
        ButtonCalculator frame = new ButtonCalculator();
        frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
        frame.pack();
        frame.setLocationRelativeTo( null );
        frame.setVisible(true);
    }
}
like image 181
camickr Avatar answered Oct 11 '22 22:10

camickr