[Java桌面应用开发]菜单组件————(2020.5.18学习笔记)

目录

01 菜单组件介绍
02 实例代码

01 菜单组件介绍

菜单也是最常用的GUI组件之一,Swing包中提供了多种菜单组件,包括JMenuBar、JMenuItem、JMenu、JCheckBoxMenuItem、JRadioButtonMenuItem和JPopupMenu等。菜单有下拉式菜单和弹出式菜单两种,本节介绍下拉式菜单,这是最常用的一类菜单
  菜单栏及菜单
  菜单栏是窗口中的主菜单,用来包容一组菜单。比如菜单栏中包含了3个下拉菜单,这3个菜单的名字分别是“File”“Option”和“Help”。菜单是最基本的下拉菜单,用来包容一组菜单项或子菜单,比如“File”中列出了4个菜单项。菜单栏只有一种构造方法,即JMenuBar( )。JFrame、JApplet和JDialog等类中都定义setJMenuBar(JMenuBar menu)方法,可以把菜单栏放到窗口的上方,
 例如:
  JFrame frame = new JFrame(“ Menu Demo”);
  // 菜单窗口标题是“ Menu Demo”
  JMenuBarmb = new JMenuBar( );
  // 创建菜单栏
  frame.setJMenuBar(mb);
  // 放到框架的上方
  JMenuBar上也可以注册一些事件侦听程序,但通常情况下,对于JMenuBar上的用户事件,都不进行处理。
  菜单的常用构造方法如下。
  •JMenu( ):构造没有文本的新菜单。
  •JMenu(String s):构造具有指定标签的新菜单,String 型参数s指定了菜单上的文本。
  •JMenu(String s,boolean b):构造具有指定标签的新菜单,指示该菜单是否可以分离。

02 实例代码

实例代码如下

package com.pc.java;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.KeyStroke;

public class Subject implements ItemListener,ActionListener {
	JFrame frame=new JFrame("Menu Demo");
	JTextField tf=new JTextField();
	
   public static void main(String args[])
   {
	   Subject s=new Subject();
	   s.GoApp();
   }
   public void go()
   {
	   JMenuBar menubar=new JMenuBar();
	   frame.setJMenuBar(menubar);
	   JMenu menu1=new JMenu("File");
	   JMenu menu2=new JMenu("Edit");
	   menubar.add(menu1);
	   menubar.add(menu2);
	   frame.setSize(300, 200);
	   frame.setVisible(true);
   }
   public void GoApp()
   {
	   JMenuBar menubar=new JMenuBar();
	   frame.setJMenuBar(menubar);
	   JMenu menu,submenu;
	   JMenuItem menuItem;
	   menu=new JMenu("File");
	   menu.setMnemonic(KeyEvent.VK_E);
	   menubar.add(menu);
	   menuItem=new JMenuItem("Open...");
	   menuItem.setMnemonic(KeyEvent.VK_O);
	   menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1,ActionEvent.ALT_MASK));
	   menuItem.addActionListener((ActionListener)this);
	   menu.add(menuItem);
	   menuItem=new JMenuItem("Save",KeyEvent.VK_S);
	   menuItem.addActionListener(this);
	   menuItem.setEnabled(false);
	   menu.add(menuItem);
	   menuItem=new JMenuItem("Close");
	   menuItem.setMnemonic(KeyEvent.VK_C);
	   menuItem.addActionListener(this);
	   menu.add(menuItem);
	   menu.add(new JSeparator());
	   menuItem=new JMenuItem("Exit");
	   menuItem.setMnemonic(KeyEvent.VK_E);
	   menuItem.addActionListener(this);
	   menu.add(menuItem);
	   menu=new JMenu("Option");
	   menubar.add(menu);
	 menu.add("Font...");
	 submenu=new JMenu("Color...");
	 menu.add(submenu);
	 menuItem=new JMenuItem("Foreground");
	 menuItem.addActionListener(this);
	 menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2,ActionEvent.ALT_MASK));
	 submenu.add(menuItem);
	 menuItem=new JMenuItem("BackGround");
	 menuItem.addActionListener(this);
	 menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3,ActionEvent.ALT_MASK));
	 submenu.add(menuItem);
	 menu.addSeparator();
	 JCheckBoxMenuItem cm=new JCheckBoxMenuItem("Always on Top");
	 cm.addItemListener(this);
	 menu.addItemListener(this);
	 menu.add(cm);
	 menu.addSeparator();
	 JRadioButtonMenuItem rm=new JRadioButtonMenuItem("Small",true);
	 rm.addItemListener(this);
	 menu.add(rm);
	 ButtonGroup group=new ButtonGroup();
	 group.add(rm);
	 rm=new JRadioButtonMenuItem("Large");
	 rm.addItemListener(this);
	 menu.add(rm);
	 group.add(rm);
	 menu=new JMenu("Help");
	 menubar.add(menu);
	 menuItem=new JMenuItem("about...",new ImageIcon("dukeWaveRed.gif"));
	 menuItem.addActionListener(this);
	 menu.add(menuItem);
	 tf.setEditable(false);
	 Container cp=frame.getContentPane();
	 cp.add(tf,BorderLayout.SOUTH);
	 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	 frame.setSize(300,200);
	 frame.setVisible(true);
   }
@Override
public void actionPerformed(ActionEvent e) {
	// TODO Auto-generated method stub
	
}
@Override
public void itemStateChanged(ItemEvent e) {
	// TODO Auto-generated method stub
	int state=e.getStateChange();
	JMenuItem amenuItem=(JMenuItem)e.getSource();
	String command=amenuItem.getText();
	if(state==ItemEvent.SELECTED)
	{
		tf.setText(command+"SELECTED");
	}
	else
	{
		tf.setText(command+"DESELECTED");
		
	}
}
}

最终实现效果如下
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值