Java-JMenuBar不会出现在JApplet中,但在作为应用程序运行时会出现

Java-JMenuBar不会出现在JApplet中,但在作为应用程序运行时会出现,java,swing,japplet,jmenubar,Java,Swing,Japplet,Jmenubar,我正在开发一个计算器,它可以作为JApplet和应用程序运行。 当我以应用程序的形式运行代码时,菜单栏就会出现。但当我以日本人的身份运行它时,它不会 这是日本限制吗?因为当我将所有代码(新的JMenuBar、添加按钮等)放入计算器类时,它就可以工作了。但是使用我自己的静态方法MenuBar.create(),它执行同样的操作并返回一个JMenuBar,它就不起作用了 这是代码,也许我忘记了一些使菜单栏不出现在小程序中的东西 计算器 private void BuildGui() { //Menu

我正在开发一个计算器,它可以作为JApplet和应用程序运行。 当我以应用程序的形式运行代码时,菜单栏就会出现。但当我以日本人的身份运行它时,它不会

这是日本限制吗?因为当我将所有代码(新的JMenuBar、添加按钮等)放入计算器类时,它就可以工作了。但是使用我自己的静态方法MenuBar.create(),它执行同样的操作并返回一个JMenuBar,它就不起作用了

这是代码,也许我忘记了一些使菜单栏不出现在小程序中的东西

计算器

private void BuildGui() {
//MenuBar.create() returns an JMenuBar filled with menus/items.
    menuBar = MenuBar.create();
    panel.add(new JButton("test"));
}

private void Go() {
// NOTE: this.isApplet works, it's a boolean i set during init() or main()
    if (this.isApplet == true) {
        setJMenuBar(menuBar);
        setSize(500,600);
        add(panel);
    } else {
        JFrame frame = new JFrame();
        frame.setJMenuBar(menuBar);
        frame.getContentPane().add(BorderLayout.CENTER, panel);
        frame.setSize(500,600);
        frame.setVisible(true);
    }
}

经过几个小时的实验,我发现了这个问题

似乎在类中声明一个静态JMenu/JMenuItem

public class MenuBar {
private static JMenu[] menu = {new JMenu("Edit"), new JMenu("View") };

public static JMenuBar create() {
    JMenuBar menuBar = new JMenuBar();
    for (JMenu m : menu) {
        menuBar.add(m);
    }
    return menuBar
}
导致菜单栏不出现。经过一点实验,我发现当作为JApplet运行时,JApplet会运行void init()两次! 在修改了init方法之后,所有其他代码都正常工作了

// I declared an boolean runOnce = false;
public void init() {
    if (runOnce) {
    new Calculator();
    }
runOnce = true
}

为了更快地得到更好的帮助,发布一个。我已经找到了解决问题的方法,我会在可能的时候发布答案。(作为新用户,我必须等待8小时)。