1

我正在尝试编译此代码(如下),但我不断收到一条错误消息,说明

此行有多个标记

  • 类型qq必须实现继承的抽象方法 ActionListener.actionPerformed(ActionEvent)
  • 可序列化的类qq没有声明static final serialVersionUID类型的字段long

我对 Java 还是很陌生,我真的不知道发生了什么,你们都对我如何纠正这种不幸的情况有任何见解吗?

public class qq extends JFrame implements ActionListener, ItemListener {

    // many fields here

    public qq() {
        // components initializing
        // other code for window closing etc.
    }

    // actionPerformed is ActionListener interface method
    // which responds to action event of selecting
    // combo box or radio button
    public void ationPerformed(ActionEvent e){
        if (e.getSource() instanceof JComboBox){
            System.out.println("Customer shops: " + freqButton.getSelectedItem());
        }
        else if (e.getSource() instanceof JRadioButton){
            if (age1.isSelected() ){
                System.out.println("Customer is under 20");
            }
            else if (age2.isSelected() ){
                System.out.println("Customer is 20 - 39");
            }
            else if (age3.isSelected() ){
                System.out.println("Customer is 39 - 59");
            }
            else if (age4.isSelected() ){
                System.out.println("Customer is over 60");
            }
        }
    }

    // itemStateChanged is ItemListener interface method
    // which responds to item event of clicking checkbox
    public void itemStateChanged (ItemEvent e){
        if (e.getSource() instanceof JCheckBox){
            JCheckBox buttonLabel = (JCheckBox)
                    e.getItemSelectable();
            if (buttonLabel == tradeButton){
                if (e.getStateChange() == e.SELECTED) {
                    System.out.println("Customer is trade");
                }
                else
                {
                    System.out.println("Customer is not trade");
                }
            }
        }
    }

    public static void main(String args[]) {
        qq cd = new qq();
        // other code setting up the window
    }

}
4

3 回答 3

2

您需要实现该actionPerformed方法。您似乎已经实现了它,ationPerformed因此您需要修复该拼写。因为您没有正确实现接口,所以不能将该类用作 ActionListener。

至于可序列化的问题 - 这与 JFrame 实现了 Serializable 接口这一事实有关,该接口需要一个 serialVersionUID。您可以不使用它进行编译,但 IDE 会报错。[有关更多信息,请参阅此处]

附带说明一下,通常您不想扩展 JFrame,而是在您的类中使用实例。

于 2013-09-10T09:24:12.740 回答
2

您的方法名称ationPerformed中有错字,应该是actionPerformed

于 2013-09-10T09:24:29.627 回答
2

更正您的拼写错误public void ationPerformed(ActionEvent e)并在“action”中添加缺少的“c”,这将处理错误消息。

您可以忽略有关 serialVersionUID 的警告,稍后当您了解有关序列化的更多信息时再回来。

于 2013-09-10T09:28:07.960 回答