首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

有关GUI编程,该如何处理

2012-04-07 
有关GUI编程Java 中可以使菜单栏在窗口左侧竖直显示吗?如果可以,该怎么做。急求!谢谢![解决办法]这样做好像

有关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);            }        });    }} 

热点排行