菜单栏

来源:互联网 发布:java中getmaxmult 编辑:程序博客网 时间:2024/05/01 14:55



模仿记事本的菜单栏

代码如下:

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);