问题描述
由于某种原因,我无法在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接口”(或类似的东西)。如果您搜索该错误消息,可能比等待某人回答您的特定问题更快地找到答案。