请教下,作了个下拉菜单,位置不对,,,如图.
代码
//-------------------------------
JMenuBar menuBar = new JMenuBar();
menuBar.setBackground(Color.LIGHT_GRAY);
// setJMenuBar(menuBar);
contentPane.add(menuBar, BorderLayout.WEST);
JMenu mnNewMenu = new JMenu("Sel Com");
menuBar.add(mnNewMenu);

JMenuItem comm1Menuitem = new JMenuItem("comm1");
mnNewMenu.add(comm1Menuitem);

JMenuItem comm2Menuitem = new JMenuItem("comm2");
mnNewMenu.add(comm2Menuitem);

JMenuItem comm3Menuitem = new JMenuItem("comm3");
mnNewMenu.add(comm3Menuitem);

解决方案 »

  1.   

    你说的位置不对指什么?是说不是在窗口标题下面吗?为什么不用setJMenuBar()方法,而是要增加到contentPane上?
    你用什么做开发?我是用Eclipse的,安装WindowBuilder后,可以可视化的坐界面,很方便。
    下面是我用2-3分钟做出来的一个带菜单的菜单的窗口,很方便的。import java.awt.BorderLayout;
    import java.awt.EventQueue;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JMenuBar;
    import javax.swing.JMenu;
    import javax.swing.JMenuItem;
    import javax.swing.KeyStroke;
    import java.awt.event.KeyEvent;
    import java.awt.event.InputEvent;/**
     * @author ZhengYesheng
     *
     */
    public class UseJMenu extends JFrame
    { private JPanel contentPane; /**
     * Launch the application.
     */
    public static void main(String[] args)
    {
    EventQueue.invokeLater(new Runnable()
    {
    public void run()
    {
    try
    {
    UseJMenu frame = new UseJMenu();
    frame.setVisible(true);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    });
    } /**
     * Create the frame.
     */
    public UseJMenu()
    {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);

    JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar);

    JMenu mnFile = new JMenu("File");
    mnFile.setMnemonic('F');
    menuBar.add(mnFile);

    JMenuItem mntmOpen = new JMenuItem("open");
    mntmOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
    mnFile.add(mntmOpen);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);
    }}