如何解决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接口”(或类似的东西)。如果您搜索该错误消息,可能比等待某人回答您的特定问题更快地找到答案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。