模仿记事本的菜单栏
代码如下:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 300);JMenuBar menuBar = new JMenuBar();setJMenuBar(menuBar);JMenu mnNewMenu = new JMenu("文件(F)");menuBar.add(mnNewMenu);ImageIcon icon=new ImageIcon("E:\\javaworkplace\\14章Swing入门\\src\\com\\example\\菜单栏\\icon-69.png");JMenuItem itemCreate=new JMenuItem("新建(N)",icon);JMenuItem itemOpen=new JMenuItem("打开(O)");mnNewMenu.add(itemCreate);mnNewMenu.add(itemOpen);JMenu mnNewMenu_1 = new JMenu("编辑(E)");menuBar.add(mnNewMenu_1);JMenu mnNewMenu_2 = new JMenu("格式(O)");menuBar.add(mnNewMenu_2);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));contentPane.setLayout(new BorderLayout(0, 0));setContentPane(contentPane);
自定义纵向的菜单栏
先自定义一个DefineMenu类 继承自 JMenu
public class DefineMenu extends JMenu { public DefineMenu(String label) { super(label); JPopupMenu menu=getPopupMenu();//获取菜单对象的弹出菜单 menu.setLayout(new BoxLayout(menu, BoxLayout.LINE_AXIS)); } @Overridepublic Dimension getMinimumSize() {// TODO Auto-generated method stub//return super.getMinimumSize(); return getPreferredSize();} @Overridepublic void setPopupMenuVisible(boolean b) {// TODO Auto-generated method stub//super.setPopupMenuVisible(b); if(b!=isPopupMenuVisible()) { if((b==true)&&isShowing()) { if(getParent() instanceof JPopupMenu) { getPopupMenu().show(this, 0, getHeight());//修改弹出菜单的显示位置 }else { getPopupMenu().show(this, getWidth(),0); } }else { //设置弹出菜单不可见 getPopupMenu().setVisible(true); } }}}
测试代码如下
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); JMenuBar menuBar=new JMenuBar(); menuBar.setLayout(new BoxLayout(menuBar, BoxLayout.PAGE_AXIS)); contentPane.add(menuBar,BorderLayout.WEST); JMenu fileMenu=new DefineMenu("文件"); menuBar.add(fileMenu); fileMenu.add("新建"); fileMenu.add("新建"); fileMenu.add("新建"); fileMenu.add("新建"); JMenu geMenu1=new JMenu("格式"); menuBar.add(geMenu1); JMenu geMenu2=new JMenu("格式"); menuBar.add(geMenu2); JMenu geMenu3=new JMenu("格式"); menuBar.add(geMenu3); JMenu geMenu4=new JMenu("格式"); menuBar.add(geMenu4);