import javax.swing.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import static javax.swing.JFrame.*;
 class WindowMenu extends JFrame{
JMenuBar menubar;
JMenu menu,subMenu;
JMenuItem item1,item2;
//public WindowMenu();
public WindowMenu(){
//init(s);
setLocation(300,300);
setSize(300,300);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
void init(String s){
setTitle(s);
menubar=new JMenuBar();
menu=new JMenu("菜单");
subMenu=new JMenu("子菜单");
item1=new JMenuItem("子菜单1");
item2=new JMenuItem("子菜单2");
menu.add(item1);
menu.addSeparator();
menu.add(item2);
menu.add(subMenu);
subMenu.add(new JMenuItem("子菜单里的菜单项"));
menubar.add(menu);
setJMenuBar(menubar);


}
 }
 class hemm{
public static void main(String args[]){
WindowMenu win=new WindowMenu();
}
}

解决方案 »

  1.   

    菜单没有被初始化。调用WindowMenu.init(String)初始化,就能显示菜单。import javax.swing.*;@SuppressWarnings("serial")
    class WindowMenu extends JFrame {
    JMenuBar menubar;
    JMenu menu, subMenu;
    JMenuItem item1, item2; public WindowMenu() {
    init("menu test");
    } void init(String s) {
    setTitle(s);
    menubar = new JMenuBar();
    menu = new JMenu("菜单");
    subMenu = new JMenu("子菜单");
    item1 = new JMenuItem("子菜单1");
    item2 = new JMenuItem("子菜单2");
    menu.add(item1);
    menu.addSeparator();
    menu.add(item2);
    menu.add(subMenu);
    subMenu.add(new JMenuItem("子菜单里的菜单项"));
    menubar.add(menu);
    setJMenuBar(menubar); }
    }class hemm {
    public static void main(String args[]) {

    SwingUtilities.invokeLater(new Runnable() { public void run() {
    WindowMenu win = new WindowMenu();
    win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    win.setLocation(300, 300);
    win.setSize(300, 300);
    win.setVisible(true);
    } }); }
    }
      

  2.   

    你把 init(s)屏蔽了,当然不会显示菜单了。
      

  3.   

    在run()方法里调用init(String s)方法,并且实例化菜单项