title: "The method addActionListener(ActionListener) in the type AbstractButton is not applicable for the arguments"
body: <p>I am a beginner programmer and I am running into a problem with an action listener and my GUI. Here is my code:</p>
  
  <p>MAIN CLASS--</p>
  
  <pre><code>import java.awt.*;
  import java.awt.event.*;
  import javax.swing.*;
  
  public class prog extends JFrame {
  
  //add instance variable to hold lockd
  prog app = new prog();
  
  //create buttons
  JPanel row1 = new JPanel();
  JButton oneLeft = new JButton("oneLeft");
  JButton oneRight = new JButton("oneRight");
  
  JPanel row2 = new JPanel();
  JButton twoLeft = new JButton("twoLeft");
  JButton twoRight = new JButton("twoRight");
  
  JPanel row3 = new JPanel();
  JButton threeLeft = new JButton("threeLeft");
  JButton threeRight = new JButton("threeRight");
  
  
  public prog() {
      super("Prog");
      setLookAndFeel();
      setSize(400, 800);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      GridLayout layout = new GridLayout(3, 2);
      setLayout(layout);
  
      //add Listeners
      oneLeft.addActionListener(app);
      oneRight.addActionListener(app);
      twoLeft.addActionListener(app);
      twoRight.addActionListener(app);
      threeLeft.addActionListener(app);
      threeRight.addActionListener(app);
  
  
  
      setVisible(true);
  }
  
  private void setLookAndFeel() {
      try {
          UIManager.setLookAndFeel("com.sun.java.plaf.");
      } catch (Exception e) {
          //ignore error
      }
  }
  
  public static void main(String[] args) {
      prog progApp = new prog();
  }
  }
  </code></pre>
  
  <p>I am getting an error in this class with the action listeners: The method addActionListener(ActionListener) in the type AbstractButton is not applicable for the arguments (prog).</p>
  
  <p>Full errors:</p>
  
  <pre><code>Description Resource    Path    Location    Type
  The method addActionListener(ActionListener) in the type AbstractButton is not applicable for the arguments (prog)  prog.java   /Experiment/src line 33 Java Problem
  The method addActionListener(ActionListener) in the type AbstractButton is not applicable for the arguments (prog)  prog.java   /Experiment/src line 35 Java Problem
  The method addActionListener(ActionListener) in the type AbstractButton is not applicable for the arguments (prog)  prog.java   /Experiment/src line 34 Java Problem
  The method addActionListener(ActionListener) in the type AbstractButton is not applicable for the arguments (prog)  prog.java   /Experiment/src line 37 Java Problem
  The method addActionListener(ActionListener) in the type AbstractButton is not applicable for the arguments (prog)  prog.java   /Experiment/src line 36 Java Problem
  The method addActionListener(ActionListener) in the type AbstractButton is not applicable for the arguments (prog)  prog.java   /Experiment/src line 38 Java Problem
  </code></pre>
  
  <p>and here is my listener class:</p>
  
  <pre><code>import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import java.io.File;
  import java.io.FileOutputStream;
  import java.io.IOException;
  
  public class progEvent implements ActionListener {
  
  prog GUI;
  String newLine = System.getProperty("line.separater");
  
  
  public progEvent(prog in) {
      GUI = in;
  }
  
  public void actionPerformed(ActionEvent event) {
      String command = event.getActionCommand();
      try {
          File numClicks = new File("numClicks.properties");
          FileOutputStream outStream = new FileOutputStream(numClicks);
  
          if (command.equals("oneLeft")) {
              write(outStream, "oneLeft has been clicked.");  
          }
          if (command.equals("oneRight")) {
              write(outStream, "oneRight has been clicked.");
          }
          if (command.equals("twoLeft")) {
              write(outStream, "twoLeft has been clicked.");
          }
          if (command.equals("twoRight")) {
              write(outStream, "twoRight has been clicked.");
          }
          if (command.equals("threeLeft")) {
              write(outStream, "threeLeft has been clicked.");
          }
          if (command.equals("threeRight")) {
              write(outStream, "threeRight has been clicked.");
          }
      } catch (IOException ioe) {
          System.out.println("The file could not be written to.");
      }
  }
  
  void write(FileOutputStream stream, String output) throws IOException {
      output = output + newLine;
      byte[] data = output.getBytes();
      stream.write(data, 0, data.length);
  }
  }
  </code></pre>
  
  <p>I can't get my GUI to show either. I'm using a book to learn it, and using a class as a kind of template for this experiment. But I'm completely stuck. Thanks!</p>