JMenuItem问题。我有五个。其中之一可以毫无问题地进行编译。其他相同,但它们拒绝编译

由于某种原因,我无法在Eclipse中进行编译。 \“ quit \”菜单项有效,其他菜单项均无效。这是为什么?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GUI{

private JFrame frame;

public GUI(){
    makeFrame();
}

//This method makes the overall GUI and adds panels, labels,
//buttons, and everything else to the GUI.
public void makeFrame(){
    frame = new JFrame(\"Tower Defense\");
    Container contentPane = frame.getContentPane();

    makeMenus();

    JButton shootButton = new JButton(\"Shoot\");
    contentPane.add(shootButton);

    frame.pack();
    frame.setVisible(true);

}

//This method makes the menu and all of the items contained
//in the menu which is then called by the makeFrame() method.
//I also add the menuItem\'s various ActionLiteners here.
public void makeMenus(){
    JMenuBar menubar = new JMenuBar();
    frame.setJMenuBar(menubar);

    JMenu fileMenu = new JMenu(\"File\");
    JMenu actionsMenu = new JMenu(\"Actions\");
    JMenu buildMenu = new JMenu(\"Build\");

    menubar.add(fileMenu);
    menubar.add(actionsMenu);
    menubar.add(buildMenu);

    JMenuItem sellItem = new JMenuItem(\"Sell\");
    JMenuItem quitItem = new JMenuItem(\"Quit\");

    JMenuItem turretsItem = new JMenuItem(\"Turrets\");
    JMenuItem minesItem = new JMenuItem(\"Mines\");
    JMenuItem workersItem = new JMenuItem(\"Workers\");

    quitItem.addActionListener(new QuitActionListener());
    sellItem.addActionListener(new SellActionListener());
    turretsItem.addActionListener(new TurretsActionListener());
    minesItem.addActionListener(new MinesActionListener());
    workersItem.addActionListener(new WorkersActionListener());

    fileMenu.add(quitItem);
    actionsMenu.add(sellItem);
    buildMenu.add(turretsItem);
    buildMenu.add(minesItem);
    buildMenu.add(workersItem);
}

//Main method. It creates a new GUI.
public static void main(String args []){
    GUI gui = new GUI();
}

class QuitActionListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
        System.exit(0);
    }
}

class SellActionListener{

    public void actionPerformed(ActionEvent e){
        System.exit(0);
    }
}

class TurretsActionListener{

    public void actionPerformed(ActionEvent e){
        System.exit(0);
    }
}

class MinesActionListener{

    public void actionPerformed(ActionEvent e){
        System.exit(0);
    }
}

class WorkersActionListener{

    public void actionPerformed(ActionEvent e){
        System.exit(0);
    }
}

class ShootActionListener{
    public void actionPerformed(ActionEvent e){
        System.exit(0);
    }
}

}
    
已邀请:
        它没有编译是因为您提供的动作侦听器(例如ѭ1)(所有quit动作除外)没有实现
ActionListener
。方法“ 3”需要一个实现“ 2”的对象。 这个:
class SellActionListener{

    public void actionPerformed(ActionEvent e){
        System.exit(0);
    }
}
需要成为这个:
class SellActionListener implements ActionListener{

    public void actionPerformed(ActionEvent e){
        System.exit(0);
    }
}
(以及其他动作侦听器) 为了后代 通常可以从编译器反馈中找出这类错误。当eclipse指出存在编译错误时,您应该能够看到错误详细信息。我猜想它会说类似“类SellActionListener没有实现ActionListener接口”(或类似的东西)。如果您搜索该错误消息,可能比等待某人回答您的特定问题更快地找到答案。     

要回复问题请先登录注册