我的程序现在遇到大麻烦。我不明白此错误消息“ MyEventA不是抽象的,并且不会覆盖java.awt.event.ActionListener中的抽象方法actionPerformed(java.awt.event.actionEvent)。”我尝试过在网上和教科书中查找内容,但仍然无法正常工作。
如果有人可以帮助我弄清楚我的代码出了什么问题,我将不胜感激。我已经花了一个半小时的时间来解决这个问题,但仍然没有解决。 :( 提前致谢!
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyEventA extends JFrame implements ActionListener
{
private JButton plus;
private JButton minus;
private JButton reset;
private JButton quit;
public MyEventA()
{
add(new JLabel("Current Value", JLabel.LEFT), BorderLayout.NORTH);
JTextField jtfCurrent = new JTextField("0");
add(jtfCurrent, BorderLayout.EAST);
JPanel jpSouth = new JPanel();
plus = new JButton("+");
minus = new JButton("-");
reset = new JButton("Reset");
quit = new JButton("Quit");
ButtonListener b1 = new ButtonListener(jtfCurrent);
jtfCurrent.addActionListener(b1);
plus.addActionListener(this);
minus.addActionListener(this);
reset.addActionListener(this);
quit.addActionListener(this);
jpSouth.add(plus);
jpSouth.add(minus);
jpSouth.add(reset);
jpSouth.add(quit);
add(jpSouth, BorderLayout.SOUTH);
}
class ButtonListener implements ActionListener {
private JTextField writeInto; // text field reference
private int count = 0;
public ButtonListener(JTextField tf) {
writeInto = tf;
count = 0;
}
public void actionPerformed(ActionEvent ae){
if(ae.getActionCommand().equals("+")){
count++;
writeInto.setText("" + count);
}
else if(ae.getActionCommand().equals("-")){
count--;
writeInto.setText("" + count);
}
else if(ae.getActionCommand().equals("Reset")){
count = 0;
writeInto.setText("" + count);
}
else {
System.exit(0);
}
}
public static void main(String[] args){
MyEventA events = new MyEventA();
events.setTitle("Part 2 Using getSource");
events.pack();
events.setDefaultCloseOperation(EXIT_ON_CLOSE);
events.setSize(300,100);
events.setLocation(200,200);
events.setVisible(true);
}
}
}
最佳答案
通常,当一个(非抽象的)类implements
接口时,会约定该类将实现该接口中提供的所有方法。
您的类MyEventA
implements
接口ActionListener
,它需要重写一个方法(void actionPerformed(ActionEvent)
)。由于MyEventA
不是抽象的,因此编译器告诉您需要在此处实现该方法。
如果您想知道如何实现该方法,则在实现的子类(ButtonListener
)中有一个很好的示例。在这里,您可以看到ButtonListener
实现相同的接口ActionListener
,并实现其方法。