当前位置: 代码迷 >> J2SE >> 有关GUI编程,该如何处理
  详细解决方案

有关GUI编程,该如何处理

热度:152   发布时间:2016-04-24 01:29:44.0
有关GUI编程
Java 中可以使菜单栏在窗口左侧竖直显示吗?如果可以,该怎么做。急求!谢谢!

------解决方案--------------------
这样做好像不太美观吧,还不如将窗口分成几个块,将左边做成导航栏一样的
------解决方案--------------------
一、你要设置JMenuBar的布局,使其内部为竖直排列
二、你在把JMenuBar加到面板上时,也要将其加到整体界面的左侧
------解决方案--------------------
以下是我在本地写的测试源码,你按照修改一下就可以了,注意主要就是要设置jmenu的布局管理器,
Java code
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);            }        });    }}
  相关解决方案