Как я могу реализовать ActionListener с неабстрактным классом? Джава
Я только недавно начал изучать, как использовать свинг, и изучал урок, который я нашел в Интернете. Я'мы в основном следовали за учебником "слово в слово но я получаю ошибку:
ScoreBoard не является абстрактным и не переопределяет абстрактный метод actionPerformed (ActionEvent) в ActionListener
Поэтому мой вопрос: как я могу реализовать ActionListener в своем классе (ScoreBoard), если класс не абстрактный?
Вот весь код: (потому что я понятия не имею, где проблема может быть)
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
Также, если вы можете объяснить, что такое абстрактный класс, это 'Я тоже помог бы, но на самом деле мне просто нужно знать, как заставить JButtons работать сейчас ...
Спасибо!