Java JOptionPane未显示(null参数,从内部类调用)

Java JOptionPane未显示(null参数,从内部类调用),java,swing,actionlistener,joptionpane,jmenu,Java,Swing,Actionlistener,Joptionpane,Jmenu,我对JAVA完全陌生,我正在尝试制作一个简单的应用程序,我无法正确显示我的JOptionPane,我想我遗漏了一些东西: 代码如下: import java.awt.Color; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JMenu; import ja

我对JAVA完全陌生,我正在尝试制作一个简单的应用程序,我无法正确显示我的
JOptionPane
,我想我遗漏了一些东西:

代码如下:

import java.awt.Color;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class Frame  extends JFrame
{       
    private static final long serialVersionUID = 1L;
    final static int WIDTH = 400;
    final static int HEIGHT = 400;

    public Frame()
    {
        super("Convert to Dxf alpha ver. - survey apps 2014");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(WIDTH, HEIGHT);
        setResizable(false);
        setLocation(100, 100);
        setBackground(Color.WHITE);
        setVisible(true);
        WelcomePanel welcomePanel = new WelcomePanel(this);
        add(welcomePanel);          
    }

    public void createMenuPanel()
    {
        MenuPanel menu = new MenuPanel();
        setJMenuBar(menu.createMenu(this));
    }
}

class MenuPanel extends JPanel implements ActionListener
{
    private JMenuItem open,save,close;
    private JMenu file,about;
    private Frame frame;
    private static final long serialVersionUID = 1L;

    public JMenuBar createMenu(Frame frame)
    {
        this.frame = frame;
        JMenuBar menuBar = new JMenuBar();          
        file = new JMenu("File");
        about = new JMenu("About");         
        menuBar.add(file);
        menuBar.add(about);         
        open = new JMenuItem("Open");
        save = new JMenuItem("Save");
        close = new JMenuItem("Close");

        file.add(open);
        file.add(save);
        file.addSeparator();
        file.add(close);

        open.addActionListener(this);
        save.addActionListener(this);
        close.addActionListener(this);
        about.addActionListener(this);

        return menuBar;
    }

    public MenuPanel()
    {
        setVisible(true);
        setOpaque(true);
        setBackground(Color.WHITE);
        setSize(Window.WIDTH,Window.HEIGHT);
    }   

    @Override
    public void actionPerformed(ActionEvent e)
    {
    Object source = e.getSource();

        if(source == open)
        {
            frame.dispose();
        }

        if(source == save)
        {           
        }

        if(source == close)
        {       
        }
        if(source == about)
        {
            JOptionPane.showMessageDialog(frame, "EasyDxfCreator - alpha version");
        }
    }

}

(我跳过了WelcomeFrame,因为它就像鼠标点击后消失的欢迎屏幕一样)

JMenu不会以这种方式运行。要获取JMenu事件,您需要实现MenuListener而不是ActionListener。ActionListener适用于JMenuItem


希望这有帮助。

JMenu不会以这种方式运行。要获取JMenu事件,您需要实现MenuListener而不是ActionListener。ActionListener适用于JMenuItem

希望这有帮助