Search code examples
javajframejpaneljbuttonactionlistener

Listener is not abstract and does not override abstract method JAVA


I can't figure out what I'm missing in this code. it keeps saying "ButtonListiner is not abstract and does not override abstract method actionPerformed(ActionEvent) in ActionListener." but I'm using actionPerformed and I've tried the @Override above both the class and the method and it's still not working. It's the same for both my SubmitButtonListener class and my ExitButtonListener class.

package customerinserterproblem_alliebeckman;

import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import javafx.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class CustomerInserterProblem_AllieBeckman extends JFrame{

CustomerInfoPanel customerInfoPanel; // Panel for customer information
JPanel buttonPanel; // Panel for buttons

/**
 * Constructor
 */
public CustomerInserterProblem_AllieBeckman()
{
    // Set the window title
    setTitle("Add Customer");

    // Specify an action for the close button
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // Create a CustomerInfoPanelObject
    customerInfoPanel = new CustomerInfoPanel();

    // Build the buttonPanel object
    buildButtonPanel();

    // Add the panels to the content pane
    add(customerInfoPanel, BorderLayout.CENTER);
    add(buttonPanel, BorderLayout.SOUTH);

    // Pack and display the window
    pack();
    setVisible(true);
}

/**
 * buildButtonPanel method
 */
private void buildButtonPanel()
{
    // Create a panel for the buttons
    buttonPanel = new JPanel();

    // Create a submit button and add an action listener
    JButton submitButton = new JButton("Submit");
    submitButton.addActionListener(new SubmitButtonListener());

    // Create an Exit button
    JButton exitButton = new JButton("Exit");
    exitButton.addActionListener(new ExitButtonListener());

    // Add the buttons to the panel.
    buttonPanel.add(submitButton);
    buttonPanel.add(exitButton);
}

My problem starts here >

/**
 * Private inner class that handles submit button events
 */
private class SubmitButtonListener implements ActionListener
{

    public void actionPerformed(ActionEvent e){

        try
        {
            // Get the customer information from the text fields
            String custNum = customerInfoPanel.getCustNum();
            String name = customerInfoPanel.getName();
            String address = customerInfoPanel.getAddress();
            String city = customerInfoPanel.getCity();
            String state = customerInfoPanel.getState();
            String zip = customerInfoPanel.getZip();

            // Create a CustomerTableManager object
            CustomerTableManager ctManager = new CustomerTableManager();

            // Insert the record
            ctManager.insert(custNum, name, address, city, state, zip);

            // clear the text fields
            customerInfoPanel.clear();

            // Let the user know the record was added.
            JOptionPane.showMessageDialog(null, "Record Added");
        }
        catch (SQLException ex){
            ex.printStackTrace();
            System.exit(0);
        }
    }
}

and here >

/**
 * Private inner class that handles Exit Button events
 */
private class ExitButtonListener implements ActionListener
{
    public void actionPerformed(ActionEvent e){
        // Exit the app
        System.exit(0);
    }
}

/**
 * main method
 */
public static void main(String[] args){
    new CustomerInserterProblem_AllieBeckman();
}

}

Thanks for the help ahead of time.


Solution

  • You need check properly that you have imported java.awt.event.ActionEvent correctly. Ensure that you did NOT incorrectly imported a wrong type of ActionEvent from some other package.

    This problem generally arises when you are using an IDE (like Eclipse/IntellliJ/etc..) and auto import accidently to a different unwanted type.