title: How can I implement ActionListener with a non abstract class? Java
body: <p>I've just recently started learning how to use swing, and have been following a tutorial I found online. I've basically followed the tutorial "word for word" but I get the error: </p>
  
  <blockquote>
    <p>ScoreBoard is not abstract and does not override abstract method
    actionPerformed(ActionEvent) in ActionListener</p>
  </blockquote>
  
  <p>So my question is, how can I implement ActionListener into my class (ScoreBoard) if the class is not abstract?</p>
  
  <p>Here is the entire code: (Because I have no idea where the problem could be)</p>
  
  <pre><code>package scoreboard;
  
  import java.awt.Color;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import javax.swing.*;
  
  public class ScoreBoard implements ActionListener{
  
  //Class Variables
  int redScore = 0;
  int blueScore = 0;
  
  //Class Objects
  JPanel titlePanel, scorePanel, buttonPanel;
  JLabel redLabel, blueLabel, redLabelT, blueLabelT;
  JButton redButton, blueButton, resetButton;
  
  
  public static void main(String[] args) {
  
      SwingUtilities.invokeLater(new Runnable(){
          public void run(){
              createFrame();
          }
      });
  
  }//End Method
  
  public static void createFrame(){
  
      JFrame frame = new JFrame("ScoreBoard");
      JFrame.setDefaultLookAndFeelDecorated(true);
  
      ScoreBoard panel = new ScoreBoard();
      frame.setContentPane(panel.contentPane());
  
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setResizable(false);
      frame.setSize(250, 190);
      frame.setVisible(true);
  
  }//End Method
  
  public JPanel contentPane(){
  
      JPanel basePanel = new JPanel();
      basePanel.setLayout(null);
      basePanel.setBackground(Color.black);
  
      //Title
      titlePanel = new JPanel();
      titlePanel.setLayout(null);
      titlePanel.setOpaque(false);
      titlePanel.setLocation(10, 0);
      titlePanel.setSize(250, 30);
      basePanel.add(titlePanel);
  
      redLabelT = new JLabel("Red Team");
      redLabelT.setLocation(0, 0);
      redLabelT.setSize(100, 30);
      redLabelT.setForeground(Color.red);
      redLabelT.setHorizontalAlignment(0);
      titlePanel.add(redLabelT);
  
      blueLabelT = new JLabel("Blue Team");
      blueLabelT.setLocation(120, 0);
      blueLabelT.setSize(100, 30);
      blueLabelT.setForeground(Color.blue);
      blueLabelT.setHorizontalAlignment(0);
      titlePanel.add(blueLabelT);
  
      //Score
      scorePanel = new JPanel();
      scorePanel.setLayout(null);
      scorePanel.setOpaque(false);
      scorePanel.setLocation(10, 40);
      scorePanel.setSize(250, 30);
      basePanel.add(scorePanel);
  
      redLabel = new JLabel("" + redScore);
      redLabel.setLocation(0, 0);
      redLabel.setSize(100, 30);
      redLabel.setForeground(Color.white);
      redLabel.setHorizontalAlignment(0);
      scorePanel.add(redLabel);
  
      blueLabel = new JLabel("" + blueScore);
      blueLabel.setLocation(120, 0);
      blueLabel.setSize(100, 30);
      blueLabel.setForeground(Color.white);
      blueLabel.setHorizontalAlignment(0);
      scorePanel.add(blueLabel);
  
      //Buttons
      buttonPanel = new JPanel();
      buttonPanel.setLayout(null);
      buttonPanel.setOpaque(false);
      buttonPanel.setLocation(10, 80);
      buttonPanel.setSize(250, 70);
      basePanel.add(buttonPanel);
  
      redButton = new JButton("Red Score");
      redButton.setLocation(0, 0);
      redButton.setSize(100, 30);
      redButton.addActionListener(this);
      buttonPanel.add(redButton);
  
      blueButton = new JButton("Blue Score");
      blueButton.setLocation(120, 0);
      blueButton.setSize(100, 30);
      blueButton.addActionListener(this);
      buttonPanel.add(blueButton);
  
      resetButton = new JButton("Reset");
      resetButton.setLocation(0, 40);
      resetButton.setSize(220, 30);
      resetButton.addActionListener(this);
      buttonPanel.add(resetButton);
  
      return basePanel;
  
     }//End Method
  
  public void actions(ActionEvent e){
  
      if(e.getSource() == redButton){
  
          redScore ++;
          redLabel.setText("" + redScore);
  
      }else if(e.getSource() == blueButton){
  
          blueScore++;
          blueLabel.setText("" + blueScore);
  
      }else if(e.getSource() == resetButton){
  
          redScore = 0;
          blueScore = 0;
          redLabel.setText("" + redScore);
          blueLabel.setText("" + blueScore);
  
      }
  
  }//End Method
  
  }//End Class
  </code></pre>
  
  <p>Also if you can explain what an Abstract class is, that'd help too, but really I just need to know how to get JButtons working for now...</p>
  
  <p>Thanks!</p>