Comment puis-je mettre en œuvre ActionListener avec un non classe abstraite? Java
J'ai récemment commencé à apprendre à utiliser un swing, et ont été à la suite d'un tutoriel que j'ai trouvé en ligne. J'ai fait suivi le tutoriel "mot pour mot", mais j'obtiens l'erreur:
Tableau de bord n'est pas abstrait et ne remplace pas la méthode abstraite
actionPerformed(ActionEvent) dans ActionListener
Donc ma question est, comment puis-je mettre en œuvre ActionListener dans ma classe (Tableau de bord) si la classe n'est pas abstrait?
Voici le code entier: (Parce que j'ai aucune idée d'où le problème pourrait être)
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
Aussi, si vous pouvez expliquer ce qu'est une classe Abstraite est, je veux l'aider, mais vraiment, j'ai juste besoin de savoir comment obtenir JButtons de travail pour le moment...
Merci!
OriginalL'auteur Nick Burt | 2013-03-22
Vous devez vous connecter pour publier un commentaire.
Mettre cette méthode dans votre Tableau de bord de la classe-
Vous pouvez également ajouter un écouteur de cette façon, si vous ne voulez pas de Tableau de bord de la classe implémente ActionListener-
Si vous voulez partager à l'auditeur, de créer son exemple et l'ajouter à tous les boutons.
À apprendre sur les classes abstraites, lisez ce http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html
OriginalL'auteur Sudhanshu Umalkar
Le compilateur se plaint parce que votre classe est pas abstraite, mais elle ne permet pas de mettre en œuvre une ou plusieurs des méthodes qu'il est déclaré à mettre en œuvre (notamment la méthode
actionPerformed
deActionListener
). Je pense que vous avez simplement besoin de renommer vosactions
méthode:OriginalL'auteur Ted Hopp
vous devez vérifier si tous les
abstract
méthodes deActionListener
sont mis en œuvre.il vous manque defination de
void actionPerformed(ActionEvent e)
OriginalL'auteur Ankit