Java中的菜单GUI帮助

时间:2011-07-14 09:00:56

标签: java swing user-interface menu

由于多个错误,我无法编译此代码。大多数错误都在initUI()方法下,该方法是从教程站点复制的。我该如何解决这个问题?

  

ActionEvent无法解析为类型MenuGUI.java / Misc / src第35行Java问题

     

ActionListener无法解析为类型MenuGUI.java / Misc / src第34行Java问题

     

KeyEvent无法解析为变量MenuGUI.java / Misc / src第29行Java问题

     

KeyEvent无法解析为变量MenuGUI.java / Misc / src第32行Java问题

     

AbstractButton类型中的方法addActionListener(ActionListener)不适用于参数(new ActionListener(){})MenuGUI.java / Misc / src第34行Java问题

import javax.swing.*;
import java.awt.event.*;

public class MenuGUI extends JFrame{

private static final long serialVersionUID = 1L;

public static void main(String[] args)
{
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            MenuGUI ex = new MenuGUI();
            ex.setVisible(true);
        }
    });
}

public MenuGUI()
{
    initUI();
}

public void initUI()
{
    JMenuBar menubar = new JMenuBar();
    ImageIcon icon = new ImageIcon(getClass().getResource("exit.png"));

    JMenu file = new JMenu("File");
    file.setMnemonic(KeyEvent.VK_F);

    JMenuItem eMenuItem = new JMenuItem("Exit", icon);
    eMenuItem.setMnemonic(KeyEvent.VK_C);
    eMenuItem.setToolTipText("Exit application");
    eMenuItem.addActionListener(new ActionListener() 
    {
        public void actionPerformed(ActionEvent event) 
        {
            System.exit(0);
        }
    });

    file.add(eMenuItem);

    menubar.add(file);

    setJMenuBar(menubar);

    setTitle("Simple menu");
    setSize(300, 200);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}

2 个答案:

答案 0 :(得分:0)

我可以毫无问题地编译代码,但是我得到了一个运行时异常:

你的照片在正确的目录中吗?在您的代码中,您尝试加载一个图标,当它不存在时,您会得到一个NullPointerException

ImageIcon icon = new ImageIcon(getClass().getResource("exit.png"));

否则将其注释掉,并创建没有图标的菜单项

 JMenuItem eMenuItem = new JMenuItem("Exit");

答案 1 :(得分:0)

您的问题是加载ImageIcon。由于在正确的文件夹中找不到图像,因此您将获得nullpointer异常。解决方案很简单:将“exit.png”图像放在与编译的类文件相同的文件夹中。