Java 中可以使菜单栏在窗口左侧竖直显示吗?如果可以,该怎么做。急求!谢谢!

解决方案 »

  1.   

    一、你要设置JMenuBar的布局,使其内部为竖直排列
    二、你在把JMenuBar加到面板上时,也要将其加到整体界面的左侧
      

  2.   

    以下是我在本地写的测试源码,你按照修改一下就可以了,注意主要就是要设置jmenu的布局管理器,package com;import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Dimension;import javax.swing.BorderFactory;
    import javax.swing.BoxLayout;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JPopupMenu;
    import javax.swing.SwingUtilities;public class TestAnswer extends JFrame{
    TestAnswer(){
    this.getContentPane().add(this.createMenuBar(),
                    BorderLayout.LINE_START);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public JMenuBar createMenuBar() {
            JMenuBar menuBar = new JMenuBar();
            menuBar.setLayout(new BoxLayout(menuBar, BoxLayout.PAGE_AXIS));//设置JMenuBar的布局管理器为纵向的
            menuBar.add(createMenu("Menu 1"));
            menuBar.add(createMenu("Menu 2"));
            menuBar.add(createMenu("Menu 3"));        menuBar.setBorder(BorderFactory.createMatteBorder(0,0,0,1,
                                                              Color.BLACK));//设置border
            return menuBar;
        }

    class HorizontalMenu extends JMenu {
            HorizontalMenu(String label) {
                super(label);
                JPopupMenu pm = getPopupMenu();
                pm.setLayout(new BoxLayout(pm, BoxLayout.LINE_AXIS));//设置纵向菜单的布局
            }
            @Override
            public Dimension getMinimumSize() {
                return getPreferredSize();
            }
            @Override
            public Dimension getMaximumSize() {
                return getPreferredSize();
            }    }


        public JMenu createMenu(String title) {
            JMenu m = new HorizontalMenu(title);
            return m;
        }

    public static void main(String[] args){
    //异步调用,使用awt的调度线程
    SwingUtilities.invokeLater(new Runnable() {

    @Override
    public void run() {
    TestAnswer t = new TestAnswer();
    t.pack();
    t.setVisible(true);
    }
    });
    }
    }