菜单栏

1 篇文章 0 订阅



模仿记事本的菜单栏

代码如下:

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








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值